数组对象求和问题

 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的总和....

阅读 3.3k
4 个回答
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
}, [])
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题