假设我有一个数组:
const items = [
{
"amount1": "100",
"amount2": "50",
"name": "ruud"
},
{
"amount1": "40",
"amount2": "60",
"name": "ted"
}
]
我想计算所有 amount1 和 amount2 Prop 的总和并得出:
[
{
"amount1": 140,
"amount2": 110
}
]
我该怎么做?
最佳答案
使用 Array.prototype.reduce()
与 Object.entries()
和 Array.prototype.forEach()
:
const items = [{amount1: 100, amount2: 50}, {amount1: 40, amount2: 60}];
const sums = items.reduce((acc, item) => {
Object.entries(item).forEach(([k, v]) => acc[k] = (acc[k] || 0) + v);
return acc;
}, {});
console.log(sums);
收件人filter出非数字属性(但根据更新的问题保留引用的数字字符串):
const items = [{amount1: '100', amount2: '50', name: 'Ruud'}, {amount1: '40', amount2: '60', name: 'Ted'}];
const sums = items.reduce((acc, item) => {
Object.entries(item)
.filter(([_, v]) => !isNaN(v))
.forEach(([k, v]) => acc[k] = (acc[k] || 0) + Number(v));
return acc;
}, {});
console.log(sums);
关于javascript - 如何计算数组中项目的总和?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55409693/