2013-03-19 12 views
74

Ho questo sotto tipo di array. Voglio ripetere questa matrice in JavaScript. Com'è possibile?Come ripetere l'array JSON in JavaScript?

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

risposta

116

È possibile farlo con il codice di seguito. Per prima cosa ottieni l'array di dati usando dictionary.data e assegnalo alla variabile data. Dopodiché puoi ripetere l'iterazione usando un ciclo normale. Ogni riga sarà un oggetto riga nell'array.

var data = dictionary.data; 

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

È possibile seguire un approccio simile per iterare l'array di immagini.

+1

Si dovrebbe mettere le parentesi graffe sulla stessa linea di JS (normalmente sostengo parentesi graffe sulla stessa linea, ma JavaScript è strano: http: // robertnyman.com/2008/10/16/beware-of-javascript-semicolon-insertion/) – Barnaby

+0

Ho la stessa struttura di array, ma perché restituisce un indefinito –

+0

per ... in non è adatto per gli array. – 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 sintatticamente inter-changable in Javascript.

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

C'è in questo modo troppo (una novità per EcmaScript5):

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

Stesso approccio per le immagini

6

Qualcosa del genere:

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

per ... in non è adatto per gli array. - quindi per..in dizionario, ma per (var j = 0; j mplungjan

3

Usa notazione del punto e/o staffa notazione per accedere alle proprietà dell'oggetto e for loops per iterare matrici:

var d, i; 

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

È anche possibile iterare gli array utilizzando i loop for..in; tuttavia, le proprietà aggiunte a Array.prototype possono essere visualizzate e non è possibile ottenere necessariamente gli elementi dell'array nell'ordine corretto o persino in qualsiasi ordine coerente.

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

Utilizzando e foreach ciclo

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