let arr = [
{id: 1, num1: 10, num2: 20, num3: 30},
{id: 2, num1: 10, num2: 20, num3: 30},
{id: 3, num1: 10, num2: 20, num3: 30}
]
想问一下,有什么逼格比较高的方法,让每个对象的num1相加, num2相加, num3相加, 然后返回得到3个数。即num1的总和,num2的总和, num3的总和....
###arr.reduce((p,c) => {
Object.keys(p).forEach(k=>p[k]+=c[k])
return p
}, {num1: 0, num2: 0, num3:0})
// {num1: 30, num2: 60, num3: 90}
###let arr = [
{id: 1, num1: 10, num2: 20, num3: 30},
{id: 2, num1: 10, num2: 20, num3: 30},
{id: 3, num1: 10, num2: 20, num3: 30}
]
var sum = demo(arr);
// [60,60,60]
console.log(JSON.stringify(sum));
/**
* 对象求和
* @param {Array} list
* @return {Array} 和的集合
*/
function demo (list) {
return list.map(item => item.num1 + item.num2 + item.num3)
}
###const result = arr.map(item => {
return {
...item,
sum: item['num1']+item['num2']+item['num3']
}
})
###const result = arr.reduce((sum, item) => {
const total = item.num1 + item.num2 + item.num3
sum.push(total)
return sum
}, [])