使用父键使用JavaScript Object / JSON基于子键返回其特定子值

问题描述 投票:-3回答:3

考虑以下目标:

JSON

{
  "id1": {
    "key1": "valueX",
    "key2": "dont care"
  },
  "id2": {
    "key1": "valueY",
    "key2": "dont care"
  },
  "id3": {
    "key1": "valueZ",
    "key2": "dont care"
  }
}

给定父键(例如“id2”)是否有办法返回嵌套的“valueY”,约束为来自“key1”?

要明确:

  • 输入:“id2”
  • 输出:“valueY”(在“id2”中查找“key1”)
javascript json
3个回答
1
投票

你正试图这样做:

let json = {
  "id1": {
    "key1": "valueX",
    "key2": "dont care"
  },
  "id2": {
    "key1": "valueY",
    "key2": "dont care"
  },
  "id3": {
    "key1": "valueZ",
    "key2": "dont care"
  }
}

valueFinder = (id, key) => json[id][key]

console.log(valueFinder("id2", "key1"))

0
投票

你可以这样:

 var data={"id1": { "key1": "valueX","key2": "dont care"},"id2": {"key1": "valueY","key2": "dont care" },"id3": { "key1": "valueZ", "key2": "dont care" }}, key="id2";
console.log(key + " = " + data[key].key1);
       

0
投票

如果您知道所需的密钥名称始终为“key1”,如示例所示,则可以使用以下函数:

var obj = {
  "id1": {
    "key1": "valueX",
    "key2": "dont care"
  },
  "id2": {
    "key1": "valueY",
    "key2": "dont care"
  },
  "id3": {
    "key1": "valueZ",
    "key2": "dont care"
  }
};

var getFirstChild = function(obj, key) {
  return obj[key].key1;
}

alert(getFirstChild(obj, 'id2'));

首先获取具有指定键的对象,然后使用key1键搜索该对。

如果要获取对象的第一个键,无论名称如何,都可以使用以下内容:

var obj = {
      "id1": {
        "key1": "valueX",
        "key2": "dont care"
      },
      "id2": {
        "key1": "valueY",
        "key2": "dont care"
      },
      "id3": {
        "key1": "valueZ",
        "key2": "dont care"
      }
    };

    var getFirstChild = function(obj, key) {
      return obj[key].key1;
    }

    alert(getFirstChild(obj, 'id2'));

这将再次搜索您指定的密钥,获取所有值,然后返回第一个。请注意,属性在对象内部排序,具体取决于javascript实现。这意味着您在代码中指定的第一个属性可能不是对象中的第一个属性。

© www.soinside.com 2019 - 2024. All rights reserved.