我有一个如下所述的数组:
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'
}
]
有没有办法用underscoreJS
来实现这个目标?
我可以通过for-loop
执行此操作。但在实际场景中,它的非常大的数组包含具有10个属性的JSON对象。所以我需要一些面向性能的解决方案
答案 0 :(得分:2)
您可以使用array.reduce:
var datas = [{
code: 1,
name: 'a1'
}, {
code: 2,
name: 'b1'
}, {
code: 1,
name: 'a2'
},
{
code: 1,
name: 'a3'
},
{
code: 2,
name: 'b2'
}
];
datas = datas.reduce((m, o) => {
const found = m.find(e => e.code === o.code);
found ? found.name += `, ${o.name}` : m.push(o);
return m;
}, []);
console.log(datas);