📜  复制数组 - Javascript (1)

📅  最后修改于: 2023-12-03 15:23:42.536000             🧑  作者: Mango

复制数组 - JavaScript

在 JavaScript 中,我们可以使用多种方法来复制一个数组。复制数组是一个很常见的需求,在程序开发中也经常会用到。本文将介绍一些不同的方法来复制一个数组。

1. slice() 方法

slice() 方法在不改变原数组的情况下创建了一个浅拷贝数组。浅拷贝数组意味着拷贝后的数组只复制了原数组的第一层元素,如果原数组的某个元素是一个对象或另一个数组,那么拷贝后的数组仍然包含同一对象或数组的引用。这也意味着如果修改某个对象或数组时,原数组和拷贝后的数组都会受到影响。

const arr1 = [1, 2, 3, 4];
const arr2 = arr1.slice();
console.log(arr2); // [1, 2, 3, 4]
2. concat() 方法

concat() 方法对原数组进行浅拷贝,并在此基础上合并其他数组或值到新数组中。与 slice() 方法不同的是,concat() 方法可以一次性合并多个数组,而且不会修改原数组。

const arr1 = [1, 2, 3, 4];
const arr2 = arr1.concat();
console.log(arr2); // [1, 2, 3, 4]
3. Spread 操作符

Spread 操作符是 ES6 引入的新特性,可以用来展开数组。它和 slice() 方法一样,只复制了第一层元素,但是它的语法更为简洁。

const arr1 = [1, 2, 3, 4];
const arr2 = [...arr1];
console.log(arr2); // [1, 2, 3, 4]
4. Array.from() 方法

Array.from() 方法可以将一个类数组对象或可迭代对象转换成一个数组,通常使用它来复制一个数组。和 slice() 方法以及 Spread 操作符一样,Array.from() 方法只复制了原数组的第一层元素。

const arr1 = [1, 2, 3, 4];
const arr2 = Array.from(arr1);
console.log(arr2); // [1, 2, 3, 4]
5. JSON.parse() 和 JSON.stringify() 方法

这种方式的缺点是只能对数据格式比较简单的数组进行复制,比如只包含基本类型的数组。如果原数组中包含了对象或函数等引用类型,那么在复制后这些引用类型的引用会失效。

const arr1 = [1, 2, 3, 4];
const arr2 = JSON.parse(JSON.stringify(arr1));
console.log(arr2); // [1, 2, 3, 4]

以上就是五种常见的数组复制方法。当然,数组复制方法不局限于以上几种。在实际编程中,我们可以根据具体的需求选择适合的方法。