如何使用lodash合并两个数组,同key时以第二个数组值覆盖第一个
实现方案
你可以借助Map做键值映射实现需求,避免嵌套循环带来的性能损耗,代码如下:
// 构建第二个数组的key到对应对象的映射 const keyMap = new Map(secondArray.map(item => [item.key, item])) // 遍历第一个数组,匹配到映射就用第二个数组的对象,否则用原对象 const mergedArray = firstArray.map(item => keyMap.get(item.key) || item)
如果你需要同时保留第二个数组中存在、但第一个数组没有的项,可以在上述代码基础上补充如下逻辑:
// 收集第二个数组中独有的key const uniqueKeysInSecond = secondArray.filter(item => !firstArray.some(i => i.key === item.key)) // 合并到最终数组 const finalArray = [...mergedArray, ...uniqueKeysInSecond]
第一种方案执行后得到的mergedArray和你给出的预期结果完全一致。
内容的提问来源于stack exchange,提问作者tiwtiwtiwtiwaaaaa
相关产品推荐
相关产品推荐

