按属性查找重复对象并使用Javascript或下划线进行合并

按属性查找重复对象并使用Javascript或下划线进行合并,javascript,arrays,underscore.js,Javascript,Arrays,Underscore.js,我有一个数组,如下所述: var somevalue = [{ code: 1, name: 'a1' }, { code: 2, name: 'b1' }, { code: 1, name: 'a2' }, { code: 1, name: 'a3' }, { code: 2, name: 'b2' } ] 从这个数组中,我想通过code找到重复的元素,并将相同代码的所有元素合并为一个

我有一个数组,如下所述:

var somevalue = [{
    code: 1,
    name: 'a1'
  }, {
    code: 2,
    name: 'b1'
  }, {
    code: 1,
    name: 'a2'
  },
  {
    code: 1,
    name: 'a3'
  },
  {
    code: 2,
    name: 'b2'
  }
]
从这个数组中,我想通过
code
找到重复的元素,并将相同代码的所有元素合并为一个。因此,最终结果将是:

var somevalue = [{
    code: 1,
    name: 'a1, a2'
  }, {
    code: 2,
    name: 'b1, b2, b3'
  }
]
使用
下划线js
有什么方法可以实现这一点吗


我可以通过
for loop
来实现这一点。但在实际场景中,它的非常大的数组包含有10个属性的JSON对象。所以我需要一些面向性能的解决方案

您可以使用array.reduce:

var数据=[{
代码:1,,
名称:“a1”
}, {
代码:2,,
名称:“b1”
}, {
代码:1,,
名称:“a2”
},
{
代码:1,,
名称:“a3”
},
{
代码:2,,
名称:“b2”
}
];
数据=数据减少((m,o)=>{
const found=m.find(e=>e.code==o.code);
found?found.name+=`,${o.name}`:m.push(o);
返回m;
}, []);
控制台日志(数据)