web-dev-qa-db-fra.com

Ajouter une propriété à un tableau d'objets

J'ai un tableau d'objets comme indiqué ci-dessous

Object {Results:Array[2]}
     Results:Array[2]
[0-1]
0:Object
       id=1     
       name: "Rick"
1:Object
       id=2     
       name:'david'

Je souhaite ajouter une propriété supplémentaire nommée Actif à chaque élément de ce tableau d'objets. 

Le résultat final devrait être comme suit. 

Object {Results:Array[2]}
     Results:Array[2]
[0-1]
0:Object
       id=1     
       name: "Rick"
       Active: "false"
1:Object
       id=2     
       name:'david'
       Active: "false"

Quelqu'un peut-il s'il vous plaît laissez-moi savoir comment y parvenir. 

39
Patrick

Vous pouvez utiliser la méthode forEach pour exécuter une fonction fournie une fois pour chaque élément du tableau. Dans cette fonction fournie, vous pouvez ajouter la propriété Active à l'élément.

Results.forEach(function(element) { element.Active = "false"; });
68
Tholle

ou utilisez map

Results.map((obj) => {
    obj.Active = 'false';
    return obj;
})

Lire la spécification

49
sidonaldson

Je me suis également heurté à ce problème, et en essayant de le résoudre, je n'arrêtais pas de planter l'onglet de chrome qui exécutait mon application. Il semble que l'opérateur de propagation pour les objets était le coupable.

Avec un peu d’aide du commentaire d’adrianolsk et de la réponse de sidonaldson ci-dessus, j’ai utilisé Object.assign () le résultat de l’opérateur de diffusion de babel, comme suit:

this.options
  .map(option => {
    return Object.assign(option, {newkey1:value1, newkey2:value2});
  });
0
Joel Balmer