将 属性 添加到对象数组
Add property to an array of objects
我有一个对象数组,如下所示
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' }))
Read the documentation 了解更多信息。
我也遇到了这个问题,在尝试解决它的过程中,我一直崩溃 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' 的新 属性 和此 属性(“活动”)的示例值到此对象内的每个对象。此代码可应用于对象数组和对象对象。
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.But如果你想用地图改变它,因为你像我一样固执,你可以这样做:
array.map(function(ele){
return ele.Active='false';
});
我有一个对象数组,如下所示
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' }))
Read the documentation 了解更多信息。
我也遇到了这个问题,在尝试解决它的过程中,我一直崩溃 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' 的新 属性 和此 属性(“活动”)的示例值到此对象内的每个对象。此代码可应用于对象数组和对象对象。
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.But如果你想用地图改变它,因为你像我一样固执,你可以这样做:
array.map(function(ele){
return ele.Active='false';
});