97 votes

Comment itérer un objet en JavaScript ?

J'ai cet objet. Je veux itérer cet objet en JavaScript. Comment cela est-il possible ?

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

144voto

kavin Points 1674

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 data. Ensuite, vous pouvez l'itérer 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.

30voto

Arno 2501 Points 1582

Il existe également une autre méthode (nouvelle pour EcmaScript5) :

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

Même approche pour les images

8voto

happyCoda Points 315

Quelque chose comme ça :

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

4voto

PleaseStand Points 16718

Utiliser la notation par points et/ou la notation par crochets pour accéder aux propriétés des objets et for boucles pour itérer les 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 en utilisant for .. in Toutefois, les propriétés ajoutées aux Array.prototype peut apparaître, et vous n'obtiendrez pas nécessairement les éléments du tableau dans leur ordre correct, ou même dans un ordre cohérent.

3voto

Emissary Points 3550

En utilisant une fonction de générateur, vous pouvez itérer sur des valeurs de 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)
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X