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