2013-03-19 19 views
74

Aşağıdaki türde bir dizim var. Bu diziyi JavaScript'te yinelemek istiyorum. Bu nasıl mümkün olabilir?JSON dizisini JavaScript'te nasıl yineleyebilirim?

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

cevap

116

Aşağıdaki kodla yapabilirsiniz. Önce veri dizisini dictionary.data kullanarak al ve onu veri değişkenine ata. Bundan sonra, normal bir döngü kullanarak yineleyebilirsiniz. Her satır dizide bir satır nesnesi olacaktır. Resim dizisini yinelemek için benzer yaklaşımı takip edebilirsiniz.

+1

Sen JS aynı hat üzerinde kıvırcık parantez koymak gerekir (Ben normalde aynı satırda küme parantezi savunan, ancak JavaScript garip: http: // robertnyman.com/2008/10/16/beware-of-javascript-semicolon-insertion/) – Barnaby

+0

Aynı dizi yapısına sahibim ama neden undefined –

+0

için ... dizileri için uygun değil. – 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]); 
    } 
    } 
} 

Bilginize: JavaScript Arrays <-> Objects sözdizimsel arası değiştirilebilir.

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

bu şekilde (yeni ECMAScript5'i kadar) da var:

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

şey için

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

Aynı yaklaşım Nesne özelliklerine erişim ve for loops dizilerini yineleme dizileri:

var d, i; 

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

Ayrıca, for..in döngülerini kullanarak dizileri yineleyebilirsiniz; Ancak, Array.prototype'a eklenen özellikler gösterebilir ve dizi öğelerini doğru sırada veya tutarlı bir sırayla elde edemezsiniz. döngü ve foreach kullanarak

+0

üzerinden yineleyin ... diziler için uygun değildir. - Sözlük için, ama için (var j = 0; j mplungjan

3

Kullanım nokta gösterimi ve/veya parantez: görüntülerin böyle

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

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); 
    } 
İlgili konular