JS数组复制方法及注意事项

在 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));

你可能感兴趣的:(javascript,开发语言,ecmascript)