如何通过uid匹配关联并合并两个JavaScript对象数组
实现方案
为避免嵌套循环的性能损耗,优先基于唯一标识uid构建用户信息映射表,再匹配合并字段,整体效率远高于逐条遍历用户的实现方式。
1. 构建uid索引
先将users数组处理为以uid为键的键值对对象,后续匹配取值为O(1)时间复杂度,适合数据量大的场景:
const userMap = users.reduce((acc, user) => { acc[user.uid] = user; return acc; }, {});
2. 合并生成最终结果
遍历responses,从索引中取出对应用户的字段合并:
const output = responses.map(item => { // 加空对象兜底,避免uid匹配不到时报错 const user = userMap[item.uid] || {}; return { ...item, name: user.name, group: user.group }; });
小数据量简化写法
如果users数组量级很小(百条以内),也可以省略建索引的步骤,直接用find匹配,代码更简洁:
const output = responses.map(item => { const matchedUser = users.find(u => u.uid === item.uid) || {}; // 直接展开匹配到的用户对象,自动合并name、group等字段 return { ...item, ...matchedUser }; });
内容的提问来源于stack exchange,提问作者mcd
相关产品推荐
相关产品推荐

