javascript:使用reduce对某些字段进行集体添加?

javascript:使用reduce对某些字段进行集体添加?,javascript,Javascript,如果我有给定的数组: 让arr=[['james',49],'scott',19],'james',51]; arr.reduce((acc,curr)=>{ acc[curr[0]]=curr[0]; acc[当前值[0]]。推送({ 价格:货币[1] }) 返回acc; },{}) 结果是: { james: [{price: 51}]. scott: [{price: 19}, } james的最后一个值是51,因此它覆盖了49。是否还有其他方法?如果它们的键相同,我可

如果我有给定的数组:

让arr=[['james',49],'scott',19],'james',51];
arr.reduce((acc,curr)=>{
acc[curr[0]]=curr[0];
acc[当前值[0]]。推送({
价格:货币[1]
}) 
返回acc;
},{})
结果是:

{ 
   james: [{price: 51}].
   scott: [{price: 19},
}

james
的最后一个值是
51
,因此它覆盖了
49
。是否还有其他方法?如果它们的键相同,我可以组合这些值,以便显示
100

您可以存储价格为零的对象,并添加同一组的过程

let数组=[['james',49],'scott',19],'james',51],
结果=数组.reduce((acc,[名称,价格])=>{
acc[name]??=[{price:0}];
acc[名称][0]。价格+=价格;
返回acc;
}, {});

控制台日志(结果)您可以使用对象为每个名称分配一个总和。例如:

让arr=[['james',49],'scott',19],'james',51];
设和={};
arr.forEach(x=>sums[x[0]]=(sums[x[0]]>=0?sums[x[0]]+x[1]:x[1]);

控制台日志(总和)我认为您的代码有问题,它抛出“acc[curr[0]]。push不是函数”异常。请确保您发布了您运行的准确代码谢谢@Nina…什么是
??=
操作符..我以前从未见过使用的。它是。