web-dev-qa-db-fra.com

Comment itérer un tableau JSON en JavaScript?

J'ai ce type ci-dessous de tableau. Je veux itérer ce tableau en JavaScript. Comment est-ce possible?

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

Vous pouvez le faire avec le code ci-dessous. Vous obtenez d’abord le tableau de données à l’aide de dictionary.data et l’affectez à la variable de données. Après cela, vous pouvez le parcourir en utilisant une boucle for normale. Chaque ligne sera un objet de ligne dans le tableau.

var data = dictionary.data;

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

Vous pouvez suivre une approche similaire pour itérer le tableau d’images. 

135
kavin

Il y a aussi cette méthode (nouvelle pour EcmaScript5):

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

Même approche pour les images

29
Arno 2501

Quelque chose comme ca:

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

Utilisez la notation pointée et/ou la notation crochetée pour accéder aux propriétés de l'objet et aux boucles for pour itérer des tableaux:

var d, i;

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

Vous pouvez également itérer des tableaux à l’aide de for..in loops; Cependant, les propriétés ajoutées à Array.prototype peuvent apparaître et vous ne pouvez pas forcément obtenir les éléments du tableau dans le bon ordre, ni même dans un ordre cohérent.

4
PleaseStand
for(index in dictionary) {
 for(var index in dictionary[]){
    // do something
  }
}
2
Sankalp Mishra

En utilisant une fonction de générateur, vous pouvez parcourir des valeurs-clés profondes. 

function * deepEntries(obj) { 
    for(let [key, value] of Object.entries(obj)) {
        if (typeof value !== 'object') 
            yield [key, value]
        else 
            for(let entries of deepEntries(value))
                yield [key, ...entries]
    }
}

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

for(let entries of deepEntries(dictionary)) {
    const key = entries.slice(0, -1).join('.')
    const value = entries[entries.length-1]
    console.log(key, value)
}

1
Emissary

Voici toutes les options que vous avez:

1. for...of (ES2015)

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

for (const entry of dictionary.data) {
  console.log(JSON.stringify(entry))
}

2. Array.prototype.forEach (ES5)

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

dictionary.data.forEach(function(entry) {
  console.log(JSON.stringify(entry))
})

3. for() (ES1)

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

for (let i = 0; i < dictionary.data.length; i++) {
  console.log(JSON.stringify(dictionary.data[i]))
}

0
connexo

Utiliser pour et pour chaque boucle 

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