使用reduce在JavaScript中添加集合对象的属性值
直截了当地说:使用reduce在JavaScript中添加集合对象的属性值,javascript,Javascript,直截了当地说: var bar = [ { a: 10, b: 20 }, { a: 10, b: 20 } ]; var reduce = bar.reduce((acc, item) => { acc['a'] = item.a++; acc['b'] = item.b++ return acc; }, {}); console.log(reduce); {a: 10, b: 20} 我想减少分配的引用:{a:20,b:40}您可以返回一个带有附加值的新对象
var bar = [
{ a: 10, b: 20 }, { a: 10, b: 20 }
];
var reduce = bar.reduce((acc, item) => {
acc['a'] = item.a++;
acc['b'] = item.b++
return acc;
}, {});
console.log(reduce);
{a: 10, b: 20}
我想减少分配的引用:
{a:20,b:40}
您可以返回一个带有附加值的新对象
var-bar=[{a:10,b:20},{a:10,b:20}],
reduce=bar.reduce((a,b)=>({a:a.a+b.a,b:a.b+b.b}));
console.log(reduce)代码>您不应该将递增的项目属性分配给累加器的属性,而应该将其添加到现有累加器的属性值中。鉴于此实现,您也不应该将初始对象传递给reduce
(或者,如果这样做,则需要定义a
和b
属性)
<> P>由于您使用<代码> Reals<代码>,我认为您也应该考虑使用<代码> const <代码>而不是<代码> var >代码> ->代码> const 不太容易出错,更易于阅读:
const bar=[
{a:10,b:20},{a:10,b:20}
];
减少的常数=减少的巴数((附件,项目)=>{
附件a+=项目a;
附件b+=第b项;
返回acc;
});
控制台日志(减少)代码>这里有一个通用的解决方案,即使数组中的对象包含不同的属性,它也可以工作
var条=[
{a:10,b:20},{a:10,b:20}
];
var reduce=bar.reduce((会计科目,项目)=>{
for(让对象的[键,值]进入(项)){
如果(根据hasOwnProperty(键)){
acc[键]+=值
}
否则{
acc={…acc[键]:值}
}
}
返回acc;
}, {});
console.log(reduce)代码>可能重复的