使用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)可能重复的