如何在JavaScript中迭代JSON数组?
我有这下面的数组types。 我想用JavaScript来迭代这个数组。 这怎么可能?
var dictionary = { "data":[ {"id":"0","name":"ABC"}, {"id":"1","name":"DEF"} ], "images": [ {"id":"0","name":"PQR"}, {"id":"1","name":"xyz"} ] };
你可以用下面的代码来完成。 您首先使用dictionary.data获取数据数组,并将其分配给数据variables。 之后,您可以使用正常for循环来迭代它。 每一行将是数组中的一个行对象。
var data = dictionary.data; for(var i in data) { var id = data[i].id; var name = data[i].name; }
您可以按照类似的方法迭代图像数组。
这也是(EcmaScript5新增的):
dictionary.data.forEach(function(item){ console.log(item.name + ' ' + item.id); });
图像的方法相同
类似的东西:
var dictionary = {"data":[{"id":"0","name":"ABC"},{"id":"1", "name":"DEF"}], "images": [{"id":"0","name":"PQR"},{"id":"1","name":"xyz"}]}; for (item in dictionary) { for (subItem in dictionary[item]) { console.log(dictionary[item][subItem].id); console.log(dictionary[item][subItem].name); } }
使用点符号和/或括号符号来访问对象属性和循环来迭代数组:
var d, i; for (i = 0; i < dictionary.data.length; i++) { d = dictionary.data[i]; alert(d.id + ' ' + d.name); }
您也可以使用for
.. in
循环来迭代数组; 然而,添加到Array.prototype
属性可能会显示,并且您可能不一定以正确的顺序获取数组元素,或者甚至以任何一致的顺序获取数组元素。
for(index in dictionary) { for(var index in dictionary[]){ // do something } }
for(var foo in dictionary){ for(var bar in dictionary[foo]){ for(var baz in dictionary[foo][bar]){ // do something... console.log(foo + ' > ' + baz + ' > ' + dictionary[foo][bar][baz]); } } }
FYI: Arrays <-> Objects
语法上可互换的Javascript。
var dictionary = {"data":[{"id":"0","name":"ABC"}, {"id":"1","name":"DEF"}], "images": [ {"id":"0","name":"PQR"},"id":"1","name":"xyz"}]}; for (var key in dictionary){ var getKey = dictionary[key]; getKey.forEach(function(item){ console.log(item.name + ' ' + item.id); }); }
使用for和foreach循环
var dictionary = { data: [{ id: "0", name: "ABC" }, { id: "1", name: "DEF" }], images: [{ id: "0", name: "PQR" }, { id: "1", name: "xyz" }] }; dictionary.data.forEach(item => { console.log(item.id + " " + item.name); }); for (var i = 0; i < dictionary.data.length; i++) { console.log(dictionary.data[i].id + " " + dictionary.data[i].name); }