it-swarm.com.ru

Добавить свойство в массив объектов

У меня есть массив объектов, как показано ниже

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

Я хочу добавить еще одно свойство с именем Active для каждого элемента этого массива объектов. 

Окончательный результат должен быть следующим. 

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"

Может кто-нибудь, пожалуйста, дайте мне знать, как этого добиться. 

39
Patrick

Вы можете использовать метод forEach , чтобы выполнить предоставленную функцию один раз для каждого элемента в массиве. В этой предоставленной функции вы можете добавить свойство Active к элементу.

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

или используйте map

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

Читать спецификацию

49
sidonaldson

Я тоже столкнулся с этой проблемой, и, пытаясь решить ее, я постоянно ломал вкладку Chrome, на которой работало мое приложение. Похоже, оператор распространения для объектов был виновником.

С небольшой помощью комментария Адрианольска и ответа Сидональдсона выше, я использовал Object.assign () вывод оператора распространения из babel, например, так:

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