JavaScript如何在指定索引位置将对象数组合并到另一数组
数组合并实现方案
你可以按照以下步骤实现需求:
- 先提取
array2的所有id存入Set,用于O(1)效率的重复判断 - 用
filter过滤出array1中id不重复的对象 - 用数组
splice方法将过滤得到的对象插入到array2的指定位置,splice方法支持直接在指定索引插入元素且不删除原有内容
完整可运行代码
const array1 = [{id: 1, name: 'abc'}, {id: 2, name: 'def'}]; const array2 = [{id: 1, name: 'xyz'}, {id: 3, name: 'mno'}]; // 提取array2所有id用于去重判断 const arr2Ids = new Set(array2.map(item => item.id)); // 过滤array1中id不重复的元素 const uniqueArr1Items = array1.filter(item => !arr2Ids.has(item.id)); // 如果不需要保留原array2,可以直接操作array2,不需要拷贝 const mergedResult = [...array2]; // 插入到第2个索引位置(数组索引从0开始,第2个位置对应索引1) mergedResult.splice(1, 0, ...uniqueArr1Items); console.log(mergedResult); // 输出:[{id: 1, name: 'xyz'}, {id: 2, name: 'def'}, {id: 3, name: 'mno'}]
方法说明
splice方法参数说明:
- 第一个参数:插入操作的起始索引,填
1即代表在原array2的第1个元素(id=1)和第2个元素(id=3)之间插入内容 - 第二个参数:要删除的元素数量,填
0代表仅执行插入操作,不删除原数组内容 - 后续参数:要插入的所有元素,用扩展运算符
...展开过滤得到的数组,可支持同时插入多个不重复元素
内容的提问来源于stack exchange,提问作者Ashwin Chandran
相关产品推荐
相关产品推荐

