2013-03-19 22 views
74

Mam to poniżej tablicy typów. Chcę iterować tę tablicę w JavaScript. Jak to jest możliwe?Jak iterować tablicę JSON w JavaScript?

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

Odpowiedz

116

Możesz to zrobić za pomocą poniższego kodu. Najpierw dostajesz tablicę danych za pomocą dictionary.data i przypisujesz ją do zmiennej danych. Następnie możesz go powtórzyć za pomocą normalnej pętli for. Każdy wiersz będzie obiektem wiersza w tablicy.

var data = dictionary.data; 

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

Możesz śledzić podobne podejście do iteracji macierzy obrazów.

+1

powinien umieścić swoje nawiasów klamrowych na tej samej linii w JS (I zazwyczaj opowiadają nawiasów klamrowych na tej samej linii, ale JavaScript jest dziwne: http: // robertnyman.com/2008/10/16/beware-of-javascript-semicolon-insertion/) – Barnaby

+0

Mam taką samą strukturę tablicy, ale dlaczego zwraca niezdefiniowany –

+0

dla ... w nie nadaje się do tablic. – mplungjan

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 składniowo między changable JavaScript.

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

Jest to zbyt (nowy w EcmaScript5):

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

samo podejście do obrazów

6

Coś takiego:

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

dla ... w nie nadaje się do tablic. - więc dla .. w słowniku, ale dla (var j = 0; j mplungjan

3

Zastosowanie kropka zapis i/lub wspornika notacja dostępu do właściwości obiektu i for loops do iteracji macierzy:

var d, i; 

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

Można również powtarzać tablice przy użyciu pętli for..in; jednak właściwości dodane do Array.prototype mogą się wyświetlać i niekoniecznie można uzyskać elementy tablicy w ich prawidłowej kolejności lub nawet w spójnej kolejności.

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

Korzystanie z pętli foreach i

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); 
    } 
Powiązane problemy