我很确定之前曾经问过这个问题,但由于缺乏适当的词语来描述问题,我似乎无法找到解决方案。
我正在尝试根据其中一个较低键(例如"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中)?注意:我知道名字是唯一的。
答案 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);