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…什么是??=
操作符..我以前从未见过使用的。它是。