Подтвердить что ты не робот

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

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

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"

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

4b9b3361

Ответ 1

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

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

Ответ 2

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

Results.map(obj=> ({ ...obj, Active: 'false' }))

Отредактировано, чтобы отразить комментарий @adrianolsk, чтобы не изменять оригинал и вместо этого возвращать новый объект для каждого.

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

Ответ 3

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

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

this.options.map(option => {
  // New properties to be added
  const newPropsObj = {
    newkey1:value1,
    newkey2:value2
  };

  // Assign new properties and return
  return Object.assign(option, newPropsObj);
});

Ответ 4

  Object.defineProperty(Results, "Active", {value : 'true',
                       writable : true,
                       enumerable : true,
                       configurable : true});

Ответ 5

Он проходит через объект как структуру ключ-значение. Затем он добавит новое свойство с именем "Active" и образец значения для этого свойства ("Active") к каждому объекту внутри этого объекта. этот код может применяться как для массива объектов, так и для объектов.

   Object.keys(Results).forEach(function (key){
            Object.defineProperty(Results[key], "Active", { value: "the appropriate value"});
        });