如何在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); }