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

问题描述:

我很确定这已被问过,但我似乎无法找到解决方案,因为缺乏适当的词来描述问题。基于Javascript中较低级别的属性访问JSON密钥

我试图根据对象的下一个键的值(例如"name":"name1")访问对象的对象的键(例如"ID1")。 JSON对象包含不同的ID对象,每个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)?注意:我知道这些名字是独一无二的。

如果我正确理解你,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. 
    } 
}); 

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);

做到这一点的唯一方法,就是在遍历每个属性值。

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

console.log(result);