javascript - 按属性查找重复对象并使用 Javascript 或 UnderscoreJS 合并
问题描述
我有一个如下所述的数组:
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 对象。所以我需要一些面向性能的解决方案。
解决方案
您可以使用 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);
推荐阅读
- javascript - 为什么我的 NetSuite 脚本失败并出现 RCRD_DSNT_EXIST 错误
- java - 如何让 RxJava 调用 onErrorReturn() 并仍然执行 onError()
- c - cppcheck : 缓冲区被越界访问
- sql - 在一个 SQL 语句中检索列表列表
- powershell - 如何在 Powershell 中检查两个字符串中的任何一个
- algorithm - 如何迭代 Rust 中序列的所有唯一排列?
- java - LeetCode 3Sum 超过时间限制
- python - Pygame 窗口没有响应,但程序继续运行
- python - 如何为 Ansible 选择正确的安装过程?
- ios - 用自定义单元格填充 UITableView