在 JavaScript 中,直接赋值数组会导致引用传递(修改一个会影响另一个),因此需要创建数组的副本。以下是几种常见的浅拷贝方法:
1. 使用 slice()
方法
javascript
const originalArray = [1, 2, 3]; const copiedArray = originalArray.slice();
2. 使用 concat()
方法
javascript
const originalArray = [1, 2, 3]; const copiedArray = originalArray.concat();
3. 使用展开运算符(ES6+)
javascript
const originalArray = [1, 2, 3]; const copiedArray = [...originalArray];
4. 使用 Array.from()
(ES6+)
javascript
const originalArray = [1, 2, 3]; const copiedArray = Array.from(originalArray);
注意事项:
-
浅拷贝:上述方法均为浅拷贝,适用于元素是基本类型的数组。
如果元素是对象或嵌套数组,修改内层内容仍会互相影响:javascript
const original = [{ a: 1 }, [2]]; const copied = [...original]; copied[0].a = 999; // 原数组的 `{ a: 1 }` 也会被修改!
-
深拷贝:若需要完全独立的副本(深拷贝),可以通过
JSON
方法实现(但有局限性,如无法处理函数、undefined
等):javascript
const original = [{ a: 1 }, [2]]; const deepCopied = JSON.parse(JSON.stringify(original));