js数组对象求和问题。

现在有

let arr = [
    {age: 10, price: 20},
    {age: 20, price: 30},
    {age: 30, price: 30}
]

然后对age和price求和。
想得到
{age: 60, price: 80}
这样的对象。

如果age和price属性名动态的又该如何写呢??
阅读 8k
5 个回答
function add(arr){
    let obj = {}
    arr.map(value=>{
        Object.keys(value).map(key=>{
            if(obj[key]){
                obj[key]+=value[key]
            }else{
                obj[key]=value[key]
            }
        })
    })
    return obj
}
const sum = (...columns) => arr => arr.reduce((a, b) => columns.reduce((c, d) => ({...c, [d]: a[d] + b[d]}), {}))

image.png

function getSum(key1, key2, ary) {
  return ary.reduce((pre, next) => {
    pre[key1] = (pre[key1] || 0) + (next[key1] || 0)
    pre[key2] = (pre[key2] || 0) + (next[key2] || 0)
    return pre
  }, {})
}

let res = getSum('age', 'price', arr)
function sum(arr) {
    return arr.reduce((res, v) => {
        return Object.keys(v).reduce((res, k) => {
            res[k] = (res[k] || 0) + v[k];
            return res;
        }, res);
    }, {})
}
const merge = data => {
    return data.reduce((acc, cur) => {
        const obj = {...acc}
        for(let attr in cur) {
            if(cur.hasOwnProperty(attr)) {
                if(obj[attr]) {
                    obj[attr] += cur[attr]
                }else {
                    obj[attr] = cur[attr]
                }
            }
        }
        return obj
    }, {})
}
merge(arr)
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题