为了账号安全,请及时绑定邮箱和手机立即绑定

如何合并并获取两个对象与对象具有相同键的值的总和

如何合并并获取两个对象与对象具有相同键的值的总和

慕慕森 2021-10-21 14:47:55
我有两个对象需要为图表实现进行展平。2019-09-12: {        type1: {            subType1: {                   value: 5                      },            subType2: {…}                               },        type2: {             subType1: {                   value: 8                      },            subType2: {…}                }        }这需要变成这个;cumulated: {        subType1: {               value: 13                  },        subType2: {sum}                           }
查看完整描述

3 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您可以遍历对象的键并对它们求和。


const obj = {

  type1: {

    subType1: {

      value: 5

    },

    subType2: {

      value: 1

    },

  },

  type2: {

    subType1: {

      value: 8

    },

    subType2: {

      value: 2

    }

  }

};


const combine = (obj) => Object.keys(obj).reduce((res, cur) => {

    for (let key of Object.keys(obj[cur])) {

      if (res.hasOwnProperty(key)) {

        res[key].value += obj[cur][key].value;

      } else {

        res[key] = obj[cur][key];

      }

    };

    return res;

}, {});


console.log(combine(obj));


查看完整回答
反对 回复 2021-10-21
?
12345678_0001

TA贡献1802条经验 获得超5个赞

  var obj = {"2019-09-12": {

        type1: {

            subType1: {

                   value: 5

                      },

            subType2: {value: 7}               

                },

        type2: {

             subType1: {

                   value: 8

                      },

            subType2: {value: 9} 

               }

        }}

var sumType1 = 0;

var sumType2 = 0;

function cumul(){

  Object.keys(obj).forEach(function(date){

  Object.keys(obj[date]).forEach(function(typeValue){

    sumType1 += obj[date][typeValue].subType1.value;

    sumType2 += obj[date][typeValue].subType2.value;

  })

})

return {

  cumulated: {

        subType1: {

               value: sumType1

                  },

        subType2: {sumType2}               

            }

}

}


console.log(cumul())


查看完整回答
反对 回复 2021-10-21
?
守着星空守着你

TA贡献1799条经验 获得超8个赞

您可以使用lodash 库。例如


var object = {

  'a': [{ 'b': 2 }, { 'd': 4 }]

};


var other = {

  'a': [{ 'c': 3 }, { 'e': 5 }]

};


_.merge(object, other);

// => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }


查看完整回答
反对 回复 2021-10-21
  • 3 回答
  • 0 关注
  • 182 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信