小编典典

在一组对象中对相似的键求和[关闭]

javascript

我有一个类似于以下对象的数组:

[
    {
        'name': 'P1',
        'value': 150
    },
    {
        'name': 'P1',
        'value': 150
    },
    {
        'name': 'P2',
        'value': 200
    },
    {
        'name': 'P3',
        'value': 450
    }
]

我需要将所有具有相同名称的对象的值相加。(可能还包括其他数学运算,例如计算平均值。)对于上面的示例,结果将是:

[
    {
        'name': 'P1',
        'value': 300
    },
    {
        'name': 'P2',
        'value': 200
    },
    {
        'name': 'P3',
        'value': 450
    }
]

阅读 315

收藏
2020-05-01

共1个答案

小编典典

首先遍历数组,然后将“名称”推入另一个对象的属性。如果属性存在,则将“值”添加到属性的值,否则将属性初始化为“值”。构建此对象后,请遍历属性并将其推入另一个数组。

这是一些代码:

var obj = [

    { 'name': 'P1', 'value': 150 },

    { 'name': 'P1', 'value': 150 },

    { 'name': 'P2', 'value': 200 },

    { 'name': 'P3', 'value': 450 }

];



var holder = {};



obj.forEach(function(d) {

  if (holder.hasOwnProperty(d.name)) {

    holder[d.name] = holder[d.name] + d.value;

  } else {

    holder[d.name] = d.value;

  }

});



var obj2 = [];



for (var prop in holder) {

  obj2.push({ name: prop, value: holder[prop] });

}



console.log(obj2);

希望这可以帮助。

2020-05-01