Javascript map函数:向对象添加新键和值

iam*_*man 1 javascript arrays

我有这样的JSON数组

var array= [{id:1,name:'foo'},{id:2,name:'bar'}]
Run Code Online (Sandbox Code Playgroud)

我想isApproved为现有数组中的每个对象添加一个新键(例如:)

预期产量:

var array= [{id:1,name:'foo',isApproved:true},{id:2,name:'bar',isApproved:true}] 
Run Code Online (Sandbox Code Playgroud)

我使用map函数来实现这一点

array.map(function(e,index){
     e.isApproved[index]= true
}
Run Code Online (Sandbox Code Playgroud)

但这不适合我

Cat*_*ohn 10

你真的很亲密.你这里不需要索引.地图遍历数组的每个元素,因此'e'将是数组中的每个对象.

var array= [{id:1,name:'foo'},{id:2,name:'bar'}];

array.map(function(e){
     e.isApproved = true;
});
          
console.log(array);
Run Code Online (Sandbox Code Playgroud)


Kej*_*ejt 7

使用此代码,您不会改变数组内的对象

const arr = [{id:1,name:'foo'},{id:2,name:'bar'}];
const mapped = arr.map(element => Object.assign(element, {isApproved: true})
Run Code Online (Sandbox Code Playgroud)

更多的新方法是使用扩展运算符:

const arr = [{id:1,name:'foo'},{id:2,name:'bar'}];
const mapped = arr.map(element => ({isApproved: true ,...element}))
Run Code Online (Sandbox Code Playgroud)

片段

const arr = [{id:1,name:'foo'},{id:2,name:'bar'}];
const mapped = arr.map(element => Object.assign(element, {isApproved: true})
Run Code Online (Sandbox Code Playgroud)