首页  >  文章  >  web前端  >  如何对 JavaScript 对象数组中相同键的值求和?

如何对 JavaScript 对象数组中相同键的值求和?

Barbara Streisand
Barbara Streisand原创
2024-11-26 13:03:10601浏览

How to Sum Values of Identical Keys in an Array of JavaScript Objects?

对对象数组中相似键的值进行求和

问题:

给定一个对象数组,确定一个计算与共享相同对象关联的值的总和(或其他数学运算)的方法key.

示例:

考虑以下对象数组:

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

所需的输出将对对象的“value”属性求和具有匹配的“名称”属性,结果在:

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

解决方案:

解决方案涉及迭代输入数组,将相同的键值聚合到一个单独的对象中。

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;
  }
});

生成的持有者对象将包含键值对,其中键是唯一的名称值,值是关联值的总和

{
  'P1': 300,
  'P2': 200,
  'P3': 450
}

要生成所需的输出,请迭代持有者对象的属性并创建新对象:

var obj2 = [];

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

存储在 obj2 中的最终结果满足要求对具有相似键的对象求和值。

以上是如何对 JavaScript 对象数组中相同键的值求和?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn