按属性查找重复对象并使用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;
}, []);
控制台日志(数据)代码>