问题:
给定一个对象数组,确定一个计算与共享相同对象关联的值的总和(或其他数学运算)的方法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中文网其他相关文章!