2013-03-19 90 views
74

我有以下这种类型的数组。我想用JavaScript来迭代这个数组。这怎么可能?如何在JavaScript中迭代JSON数组?

var dictionary = { 
    "data":[ 
     {"id":"0","name":"ABC"}, 
     {"id":"1","name":"DEF"} 
    ], 
    "images": [ 
     {"id":"0","name":"PQR"}, 
     {"id":"1","name":"xyz"} 
    ] 
}; 

回答

116

您可以使用下面的代码。您首先使用dictionary.data获取数据数组并将其分配给数据变量。之后,您可以使用正常for循环来迭代它。每一行都将是数组中的一个行对象。

var data = dictionary.data; 

for(var i in data) 
{ 
    var id = data[i].id; 
    var name = data[i].name; 
} 

您可以按照类似的方法迭代图像数组。

+1

你应该把你的花括号在JS同一行(我通常主张在同一行花括号,但JavaScript是怪异:HTTP:// robertnyman.com/2008/10/16/beware-of-javascript-semicolon-insertion/) – Barnaby 2015-12-01 18:24:58

+0

我有相同的数组结构,但为什么它返回undefined – 2016-08-11 10:23:15

+0

for ... in不适用于数组。 – mplungjan 2016-10-13 05:41:09

1
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。

2
for(index in dictionary) { 
for(var index in dictionary[]){ 
    // do something 
    } 
} 
22

有这样太(新EcmaScript5):

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

类似的东西同样的方法符号访问对象属性和for loops迭代数组:

var d, i; 

for (i = 0; i < dictionary.data.length; i++) { 
    d = dictionary.data[i]; 
    alert(d.id + ' ' + d.name); 
} 

您也可以使用for..in循环迭代数组;然而,添加到Array.prototype的属性可能会显示,并且您可能不一定按正确的顺序或甚至以任何一致的顺序获取数组元素。

+0

for ... in不适用于数组。 - 用于..在字典中,但用于(var j = 0; j mplungjan 2016-10-13 05:41:35

3

使用点符号和/或支架:

dictionary.data.forEach(function(item){ 
    console.log(item.name + ' ' + item.id); 
}); 

的图像

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

使用并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); 
    }