如何使用forEach,map,reduce,filter等以功能性编程风格更改每个对象的arr ['first']。
let value = 'abc'
let arr = [{
'first': 'aaa'
},{
'first': 'bbb'
},{
'first': 'ccc'
}];
答案 0 :(得分:0)
这是一种不变的方式,用于更新数组中每个项目的属性first
。它使用Array.map()
创建一个新数组,并使用散布运算符复制每个项目并将first
属性设置为value
:
const value = 'abc';
const arr = [{ 'first': 'aaa' },{ 'first': 'bbb' },{ 'first': 'ccc' }];
const newArr = arr.map(item => ({ ...item, first: value }));
console.log(newArr);
如果要变异原始数组(对于函数范式而言,这不是一个好主意),请改用Array.forEach()
:
const value = 'abc';
const arr = [{ 'first': 'aaa' },{ 'first': 'bbb' },{ 'first': 'ccc' }];
arr.forEach(item => item.first = value);
console.log(arr);
答案 1 :(得分:0)
您可以使用map
并创建一个新数组
let value = 'abc';
let arr = [{
'first': 'aaa'
}, {
'first': 'bbb'
}, {
'first': 'ccc'
}];
let newArr = arr.map(function(item) {
return {
first: value
}
})
console.log(newArr)
答案 2 :(得分:0)
如果我能很好地理解您,您想使用map在数组的每个对象中更改键名“ first”吗?
您可以尝试以下代码:
const value = 'abc';
const arr = [{
'first': 'aaa'
},{
'first': 'bbb'
},{
'first': 'ccc'
}];
const newArr = arr.map(obj => {
if ('first' !== value) {
Object.defineProperty(obj, value,
Object.getOwnPropertyDescriptor(obj, 'first'));
delete obj['first'];
}
return obj;
});
console.log(newArr);
或者如果您只想更改每个obj中first的值:
const value = 'abc';
const arr = [{
'first': 'aaa'
},{
'first': 'bbb'
},{
'first': 'ccc'
}];
const newArr = arr.map(obj => ({...obj, first: value}));
console.log(newArr);
答案 3 :(得分:-2)