如何获取每个属性的总和值
How to get sum values of each of properties
我想获取每个属性的总和值
const dataArr = [
{ prop1 : 1,
prop2 : 10,
prop3 : 100
},
{ prop1 : 2,
prop2 : 20,
prop3 : 200
},
{ prop1 : 3,
prop2 : 30,
prop3 : 300
},
]
const result = dataArr.reduce( ( acc, curr ) => {
return {
prop1 : acc + curr.prop1,
prop2 : acc + curr.prop2,
prop3 : acc + curr.prop3
}
},0)
console.log(result)
// expected { prop1 : 6, prop2 : 60, prop3 : 600 }
// but got { prop1 : 3, prop2 : 30, prop3 : 300 }
所以,我试过像这样减少,但没有用。我该如何解决?
const dataArr = [
{ prop1 : 1,
prop2 : 10,
prop3 : 100
},
{ prop1 : 2,
prop2 : 20,
prop3 : 200
},
{ prop1 : 3,
prop2 : 30,
prop3 : 300
},
];
let sum = dataArr.reduce((a,b)=>({
prop1: a.prop1+b.prop1,
prop2: a.prop2+b.prop2,
prop3: a.prop3+b.prop3,}));
console.log(sum);
如果属性数量未知,可以使用嵌套 reduce:
const dataArr = [{
prop1: 1,
prop2: 10,
prop3: 100
},
{
prop1: 2,
prop2: 20,
prop3: 200
},
{
prop1: 3,
prop2: 30,
prop3: 300
},
]
const result = dataArr.reduce((acc, curr) => {
return Object.entries(curr).reduce((iAcc, [k, v]) => {
iAcc[k] = (iAcc[k] ?? 0) + v;
return iAcc;
}, acc)
})
console.log(result)
如果某些元素缺少属性,这也有效
我想获取每个属性的总和值
const dataArr = [
{ prop1 : 1,
prop2 : 10,
prop3 : 100
},
{ prop1 : 2,
prop2 : 20,
prop3 : 200
},
{ prop1 : 3,
prop2 : 30,
prop3 : 300
},
]
const result = dataArr.reduce( ( acc, curr ) => {
return {
prop1 : acc + curr.prop1,
prop2 : acc + curr.prop2,
prop3 : acc + curr.prop3
}
},0)
console.log(result)
// expected { prop1 : 6, prop2 : 60, prop3 : 600 }
// but got { prop1 : 3, prop2 : 30, prop3 : 300 }
所以,我试过像这样减少,但没有用。我该如何解决?
const dataArr = [
{ prop1 : 1,
prop2 : 10,
prop3 : 100
},
{ prop1 : 2,
prop2 : 20,
prop3 : 200
},
{ prop1 : 3,
prop2 : 30,
prop3 : 300
},
];
let sum = dataArr.reduce((a,b)=>({
prop1: a.prop1+b.prop1,
prop2: a.prop2+b.prop2,
prop3: a.prop3+b.prop3,}));
console.log(sum);
如果属性数量未知,可以使用嵌套 reduce:
const dataArr = [{
prop1: 1,
prop2: 10,
prop3: 100
},
{
prop1: 2,
prop2: 20,
prop3: 200
},
{
prop1: 3,
prop2: 30,
prop3: 300
},
]
const result = dataArr.reduce((acc, curr) => {
return Object.entries(curr).reduce((iAcc, [k, v]) => {
iAcc[k] = (iAcc[k] ?? 0) + v;
return iAcc;
}, acc)
})
console.log(result)
如果某些元素缺少属性,这也有效