javascript 中使用展开运算符(spread operator)合并数组,最直接的方法是将多个数组元素放入一个新的方括号中。例如 [...arr1, ...arr2] 会将两个数组合并为一个新数组,原数组保持不变。如果存在重复元素或需要去重,可以结合 set 对象处理。展开运算符在合并时会按顺序将源数组的元素逐个插入新数组,适用于浅拷贝和简单拼接场景。

如何合并两个普通数组并保留原数组不变?
要合并两个普通数组且不影响原始数据,只需创建一个新数组字面量,并在其中展开这两个数组。展开运算符会遍历每个数组的迭代器,将值依次放入新数组。这种方法不会修改 arr1 或 arr2,而是返回一个全新的引用。若数组中包含对象,新数组中的对象仍是原对象的引用,属于浅合并。

const arr1 = [1, 2, 3]; const arr2 = [4, 5, 6]; const merged = [...arr1, ...arr2]; console.log(merged); // [1, 2, 3, 4, 5, 6] console.log(arr1); // [1, 2, 3] (未改变)
如何在合并时去除重复元素?
如果在合并过程中希望自动去除重复值,可以将展开后的数组传递给 Set 构造函数,再转回数组。Set 会自动过滤掉重复项,确保结果数组中的元素唯一。这种方式比手动遍历判断更高效,且代码简洁。注意 Set 基于严格相等比较,对于对象类型可能无法正确去重,仅适用于基本数据类型。

const arr1 = [1, 2, 2, 3]; const arr2 = [2, 3, 4]; const uniqueMerged = [...new Set([...arr1, ...arr2])]; console.log(uniqueMerged); // [1, 2, 3, 4]
合并后数组的长度是如何计算的?
合并后数组的长度等于所有源数组长度的总和。展开运算符只是将元素逐个复制,不改变元素本身的结构,因此新数组的 length 属性直接反映元素个数。若使用 Set 去重,长度会小于总长度,具体取决于重复值的数量。这一行为在已知输入规模时可预测输出大小,便于内存规划。
Java免费学习笔记:立即使用
解锁 Java 大师之旅:从入门到精通的终极指南











