2013-03-19 89 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); 
    }