基于Javascript中的较低级别属性访问JSON密钥

时间:2017-06-01 22:28:42

标签: javascript jquery json

我很确定之前曾经问过这个问题,但由于缺乏适当的词语来描述问题,我似乎无法找到解决方案。

我正在尝试根据其中一个较低键(例如"ID1")的值访问对象对象中的对象密钥(例如"name":"name1")。 JSON对象包含不同的ID对象,每个对象都包含名称和其他属性。

mydata = {
"ID1":    {"name":"name1","akey":true,"anotherkey":"foor"},
"ID2":    {"name":"name2","akey":true,"anotherkey":"bar"},
"ID3":    {"name":"name3","akey":false,"anotherkey":"foo"}
}

如果我知道name,那么获取ID非常简单,例如:

myname = mydata["ID1"].name;  //returns "name1"

但我想要做的是获取对象的ID,如果我知道它的name,那么简而言之,就是上面一行的反面。有没有简单的解决方案(在纯Javascript或jQuery中)?注意:我知道名字是唯一的。

3 个答案:

答案 0 :(得分:0)

如果我理解正确,Object.keys()可以帮到你。它看起来像这样:

var mydata = {
    "ID1": {"name":"name1","akey":true,"anotherkey":"foor"},
    "ID2": {"name":"name2","akey":true,"anotherkey":"bar"},
    "ID3": {"name":"name3","akey":false,"anotherkey":"foo"}
}

Object.keys(mydata).forEach(function(id) {
    var obj = mydata[id];
    if (obj.name === "name1") {
        // I found an object based on the "name" property.
        // the 'id' variable holds a reference to it.
    }
});

答案 1 :(得分:0)

var mydata = {
"ID1":    {"name":"name1","akey":true,"anotherkey":"foor"},
"ID2":    {"name":"name2","akey":true,"anotherkey":"bar"},
"ID3":    {"name":"name3","akey":false,"anotherkey":"foo"}
}

var parentId = Object.keys(mydata).find(function(key){
  return mydata[key].name === 'name2';
});

console.log(parentId);

答案 2 :(得分:0)

唯一的方法就是遍历每个属性值。

var result = null;
for(var key in mydata) {
  if(mydata[key].name==='name1'){
    result = key;
    break;
  }
}

console.log(result);