我有一个包含对象和数组的(嵌套)数据结构。如何提取信息,即访问特定或多个值(或键),如1,105,1055?
例如:
[{"1":{"url":"http:\/\/web.com\/","catname":"HOBBIES"}},
{"105":{"parent":"1","url":"http:\/\/web.com\/","catname": "TRUCKS"}},
{"1055":{"parent":"105","url":"http:\/\/web.com\/","catname":"TIRES"}} ]
代码是:
$( document ).ready(function() {
var formURL = 'http://web.com/ajax.php?store=photo&action=jsoncategories';
$.getJSON( formURL, function(json) {
$.each(json[0], function(i, object) {
$.each(object, function(property, value) {
console.log(property + "=" + value);
});
});
});
});
json [0]遍历key 1的数据。应该替换json [0]以提取数组的所有数据键
答案 0 :(得分:2)
你错过了“卡车之前”。
另外,请尝试使用console.log(property + "=" + value);
而不是alert()。
$.each(json, function(key, val) {
$.each(val, function(index, value){
console.log(value);
});
});
或者可能是这样:
$.each(json, function(key, val) {
$.each(val, function(key, val) {
console.log(val.url);
});
});
答案 1 :(得分:1)
这是遍历元素的JavaScript。我假设数据已加载,并且代码中的遍历开始如下:
var json = [{"1":{"url":"http:\/\/web.com\/","catname":"HOBBIES"}},
{"105":{"parent":"1","url":"http:\/\/web.com\/","catname": "TRUCKS"}},
{"1055":{"parent":"105","url":"http:\/\/web.com\/","catname":"TIRES"}} ];
for(var i=0, json_len=json.length; i< json_len; i+=1)
{
var j = json[i]; // Here you are accessing to the item of Array using index of item.
for(var k in j)
{
var d=j[k]; //Here you are accessing to the object using key pair.
for(var l in d)
console.log( k, ':', l, ':', d[l]);
}
}
您可以在JSFIDDLY中看到示例代码执行。
如果你有长json数组这种方法更好。因为您的json
变量是Array,并且应该使用for
循环遍历数组元素之间的遍历。您的数组项是对象,因此应使用for ... in
遍历它们。这是记住的最佳方法。因为for loop
比each
快。这是jsperf中的comparison。如果您有任何问题,请随时在这里发表评论。