我有一个如下所示的对象数组

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"

有人能告诉我如何实现这一点吗?


可以使用forEach方法对数组中的每个元素执行一次所提供的函数。在这个提供的函数中,您可以向元素添加Active属性。

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

使用Array.prototype.map ()

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

有关更多信息,请阅读文档。


我也遇到了这个问题,在试图解决这个问题时,我一直在运行我的应用程序的chrome选项卡。看起来对象的扩散操作符是罪魁祸首。

在adrianolsk的注释和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);
});

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

它作为键值结构遍历对象。然后,它将添加一个名为“Active”的新属性,并为该属性(“Active”)的示例值添加到该对象内部的每个对象。这段代码可以应用于对象的数组和对象的对象。

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

使用ES6,你可以简单地做:

 for(const element of Results) {
      element.Active = "false";
 }

你可以用map或foreach来做。 foreach有很多答案,所以我将讲述如何使用map。

  let new_array=array.map(function(ele){
       
       return {...ele,Active:'false'};
     })

如果你不想有一个新的数组,而是改变它,你可以使用foreach。但是如果你像我一样固执,想用map改变它,你可以这样做:

array.map(function(ele){
       
       return ele.Active='false';
     });