我有以下地图,其中每个键都是一个地图,其值列为以下json:
{
"key": {
"source": ["element1", "element2"],
"target": ["element1", "element2"]
},
"key2": {
"source": ["element1"],
"target": ["element1"]
}
}
我想做以下事情:
获取将返回地图的密钥(get(“key2”))
查看此地图中的每个键(来源和目标)
迭代结果列表中的每个项目(element1,element2)
我怎样才能做到这一点?
答案 0 :(得分:5)
使用jQuery的.each()
循环遍历key2
项。
var obj = $.parseJSON(yourJSONString);
$.each(obj["key2"], function(key, value){
console.log(key); // <-- source, target
$.each(value, function(arrKey, arrValue){
console.log(arrValue); // <-- element1, element2 etc etc
});
});
如果您不想指定key2
作为目标,并且想要遍历所有外部对象,那么:
$.each(obj, function(outerKey, outerValue){
console.log(outerKey); // <-- key, key2
$.each(outerValue, function(key, value){
console.log(key); // <-- source, target
$.each(value, function(arrKey, arrValue){
console.log(arrValue); // <-- element1, element2 etc etc
});
});
});
通过使用原生JSON.parse()
和嵌套的vanilla for(var=0; i<something.length; i++)
循环,您也可以在没有jQuery的情况下实现相同的目标。
答案 1 :(得分:0)
var o = {
"key": {
"source": ["element1", "element2"],
"target": ["element1", "element2"]
},
"key2": {
"source": ["element1"],
"target": ["element1"]
}
}
var key = o.key2;
for(p in key)
{
elementArray = key[p];
for(var i=0;i<elementArray.length;i++)
{
//access element 1 and 2 here
}
}
答案 2 :(得分:0)
不确定这是否是您所需要的,但它应该引导您走上正确的道路:
var things = {
"key": {
"source": ["element1", "element2"],
"target": ["element1", "element2"]
},
"key2": {
"source": ["element1"],
"target": ["element1"]
}
};
var get = function( key ) {
var output = '';
for( thisKey in things ) {
if( thisKey === key ) {
var myThing = things[ key ];
for( thingKey in myThing ) {
output += thingKey + ': ' + myThing[thingKey].join(', ') + '<br />';
}
return output;
}
}
}
document.write( get( 'key' ));
document.write('<hr />');
document.write( get( 'key2' ));