聚合javascript对象中具有相同值的键

聚合javascript对象中具有相同值的键,javascript,Javascript,我有一个这样的对象数组: [{state:CA,value:1},{state:CA,value:1},{state:NY,value:10}] 我希望最终结果是一个包含相同状态值聚合的对象: {CA:2,NY:10} 我有下面的代码来实现这一点: 让arr=[{state:'CA',value:1},{state:'CA',value:1},{state:'NY',value:10}]; 设finalObj={}; arr.map(功能(项目){ 让状态=item.state; 如果(!fi

我有一个这样的对象数组:

[{state:CA,value:1},{state:CA,value:1},{state:NY,value:10}]

我希望最终结果是一个包含相同状态值聚合的对象:

{CA:2,NY:10}

我有下面的代码来实现这一点:

让arr=[{state:'CA',value:1},{state:'CA',value:1},{state:'NY',value:10}];
设finalObj={};
arr.map(功能(项目){
让状态=item.state;
如果(!finalObj[状态]){
finalObj[状态]=item.value;
}否则{
finalObj[state]+=item.value;
}
});

console.log(finalObj)
首先,如果您想要一个简单的循环,我建议使用
forEach
而不是
map
。然而,在这种情况下,您真正想要的是
reduce
。我认为这是我能想到的最短的方法:

const arr=[{state:'CA',value:1},{state:'CA',value:1},{state:'NY',value:10}];
const finalObj=arr.reduce((附件,项目)=>{
acc[item.state]=(acc[item.state]| | 0)+item.value;
返回acc;
}, {});