首页 > 解决方案 > 如果在对象中发现重复名称,如何迭代对象数组以添加计数器值

问题描述

我有 1 个对象数组,并且想要遍历其中的对象。因此,如果发现重复的名称条目,我必须添加计数器值并且应该合并它。对象的最终数组必须具有唯一的条目。

对象A =

[
  {name: 'Voice', counter: 1},
  {name: 'tele', counter: 1},
  {name: 'equip', counter: 1},
  {name: 'equip', counter: 2},
  {name: 'Voice', counter: 1}
]

结果应该是:-

对象B =

[
  {name: 'Voice', counter: 2},
  {name: 'tele', counter: 1},
  {name: 'equip', counter: 3}
]

标签: javascriptunderscore.js

解决方案


您可以使用array.reduce如下一些逻辑。

DEMO

let data = [{name: 'Voice', counter: 1},
           {name: 'tele', counter: 1},
           {name: 'equip', counter: 1},
           {name: 'equip', counter: 2},
           {name: 'Voice', counter: 1}]


var result = [];
data.reduce(function (res, value) {
    if (!res[value.name]) {
        res[value.name] = {        
        name: value.name,
        counter: 0
        };
        result.push(res[value.name])
    }
    res[value.name].counter += value.counter
    return res;
}, {});

console.log(result)


推荐阅读