Javascript 将属性添加到对象数组中

Javascript 将属性添加到对象数组中,javascript,arrays,object,underscore.js,Javascript,Arrays,Object,Underscore.js,我有一个对象数组,如下所示 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

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

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"
有人能告诉我如何做到这一点吗

您可以使用该方法为数组中的每个元素执行一次提供的函数。在此提供的函数中,您可以将
Active
属性添加到元素中

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

或者使用
map

Results.map(obj=> ({ ...obj, Active: 'false' }))
通过@adrianolsk编辑以反映注释,从而不改变原始内容,而是为每个内容返回一个新对象


我也遇到了这个问题,为了解决这个问题,我一直在破坏运行我应用程序的chrome标签。看来是罪魁祸首

在上面adrianolsk的评论和sidonaldson的回答的帮助下,我使用了babel的spread操作符的输出,如下所示:

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);
});

它作为键值结构贯穿对象。然后,它将向该对象内的每个对象添加一个名为“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";
 }

在数组中循环。循环时向每个数组元素添加属性。哪一部分你不知道怎么做?准确地说,只在ES6ES5中支持;)-但是babel会很高兴地反编译itmap应该返回一个新数组而不是改变对象,在这种情况下forEach会更好,或者使用map并返回一个新对象
Results.map(obj=>({…obj,Active:'false'}))
Great solution@adrianolsk,您应该将其作为单独的答案提交。使用Object.defineProperty定义动态属性。是的,它作为键值结构贯穿对象。然后,它将向该对象中的每个对象添加一个名为“Active”的新属性和一个示例值。此代码可以应用于对象数组和对象对象数组。
 for(const element of Results) {
      element.Active = "false";
 }