2017-06-01 1 views
0

これまではこれまでに尋ねられたことはありますが、問題を説明する適切な単語がないため、解決策が見つからないようです。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"} 
} 

私はIDを知っていればそれはnameを取得するために非常に簡単です、例えば:

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

しかし、私がやろうとしているが、私はそのnameを知っていれば、オブジェクトのIDを取得しています、したがって、要するに、上記の行の逆です。これは純粋なJavascriptまたはjQueryの単純なソリューションですか?注:私は名前が一意であることを知っています。

答えて

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

0

:それは次のようになります。

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

console.log(result); 
関連する問題