在JavaScript中,当您创建一个数组时,实际上创建了一个对象,并将其引用分配给变量。这意味着,当您将一个数组分配给另一个变量时,实际上是将原始数组的引用复制到新变量,而不是创建一个新的数组副本。这就是为什么更改一个数组会影响到它的副本的原因。
例如,考虑以下代码:
let array1 = [1, 2, 3];
let array2 = array1;
array2[0] = 10;
console.log(array1); // 输出 [10, 2, 3]
在这个例子中,我们首先创建了一个名为array1
的数组,并将其引用分配给array1
。然后,我们将array1
的引用分配给array2
。当我们更改array2
时,array1
也会受到影响,因为它们都引用相同的数组对象。
如果您想要创建一个数组的副本,可以使用以下方法之一:
slice()
方法:let array1 = [1, 2, 3];
let array2 = array1.slice();
array2[0] = 10;
console.log(array1); // 输出 [1, 2, 3]
...
):let array1 = [1, 2, 3];
let array2 = [...array1];
array2[0] = 10;
console.log(array1); // 输出 [1, 2, 3]
Array.from()
方法:let array1 = [1, 2, 3];
let array2 = Array.from(array1);
array2[0] = 10;
console.log(array1); // 输出 [1, 2, 3]
这些方法都可以创建一个新的数组副本,而不仅仅是复制原始数组的引用。因此,更改一个数组不会影响到其副本。
领取专属 10元无门槛券
手把手带您无忧上云