web-dev-qa-db-fra.com

Angular 2 obtient la clé et la valeur du tableau json avec la clé dynamique

Je veux obtenir la clé et la valeur du tableau JSON avec des clés dynamiques. Sens, je ne sais pas à l'avance quelles seront les clés.

Ceci est un exemple pour le json la fonction obtient:

arr = [
       {key1: 'val1'},
       {key2: 'val2'},
       {key3: 'val3'}
      ];

Cela me semble simple mais je suis incapable d’obtenir la clé et la valeur de chaque article.

Voici ce que j'ai essayé (basé sur ce tuyau ):

for (let key of arr) {
   console.log ('key: ' +  key + ',  value: ' + arr[key]);
 }

Mais ce que je trouve dans le journal est le suivant:

key:[object Object], value: undefined

Mon comportement attendu est d'obtenir ce qui suit:

key:key1, value:val1

Qu'est-ce que je fais mal? Comment puis-je obtenir les clés et les valeurs?

4
Batsheva

Dans votre exemple, vous avez un tableau d'objets et chacun de ces objets a exactement une propriété.

for (let obj of arr) {
    console.log("object:", obj);
    for (let key in obj) {
        console.log("      key:", key, "value:", obj[key]);
    }
}

Le code suivant de votre publication

for (let key in arr) {
    console.log ('key: ' +  key + ',  value: ' + arr[key]);
}

... travaillerait sur une structure de données comme celle-ci:

let arr = {
    key1: 'val1',
    key2: 'val2',
    key3: 'val3'
};
11
Hendrik Brummermann

Vous avez besoin d'une autre boucle for pour accéder à la clé et à la valeur,

for (let key of this.arr) {
 for(var i in key){
      console.log('key: ' +  i + ',  value: ' + key[i]);
 }
}

Vérifiez la console

DÉMO 

2
Sajeetharan

Si vous êtes plus soucieux de spécifier un objet comme 

var temp={'name':Dinesh,'age':18}

Vous pouvez utiliser la syntaxe suivante.

console.log(Object.keys(temp)[0],Object.values(temp)[0]):

Indice particulièrement nul, car les deux clés de méthode et les valeurs de l'objet renvoient un tableau

1
Sachin Mishra
yourObject.forEach(function(value, index){
   // do your job
   console.log(value, index);
});
0
reihaneh