📜  js 数组复制不引用 - Javascript (1)

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

JS 数组复制不引用 - Javascript

在 Javascript 中,如果我们直接将一个数组赋值给另一个变量,那么它们将指向同一个数组对象。这意味着如果对其中一个数组进行了修改,另一个数组也会被影响。所以如果我们需要复制一个数组并且不想引用原数组,那么我们需要使用一些特殊的方法。

方法一:使用 spread 操作符

Spread 操作符可以将数组展开成单独的元素,然后将它们放入另一个数组中。这样我们就可以创建一个新的数组,该数组包含原数组的所有元素,而不是引用原数组。

const originalArr = [1, 2, 3];
const newArr = [...originalArr];

console.log(originalArr); // [1, 2, 3]
console.log(newArr); // [1, 2, 3]

newArr.push(4);

console.log(originalArr); // [1, 2, 3]
console.log(newArr); // [1, 2, 3, 4]
方法二:使用 Array.from()

我们也可以使用 Array.from() 方法来复制数组。它将创建一个新的数组,其中包含原始数组的所有元素。与 spread 操作符不同,Array.from() 方法还允许我们对每个元素进行转换,例如将字符串转换为大写。

const originalArr = [1, 2, 3];
const newArr = Array.from(originalArr);

console.log(originalArr); // [1, 2, 3]
console.log(newArr); // [1, 2, 3]

newArr.push(4);

console.log(originalArr); // [1, 2, 3]
console.log(newArr); // [1, 2, 3, 4]
方法三:使用 concat()

另一个选项是使用 concat() 方法。该方法将原始数组与一个空数组连接起来,从而创建一个新的数组。

const originalArr = [1, 2, 3];
const newArr = [].concat(originalArr);

console.log(originalArr); // [1, 2, 3]
console.log(newArr); // [1, 2, 3]

newArr.push(4);

console.log(originalArr); // [1, 2, 3]
console.log(newArr); // [1, 2, 3, 4]

无论你选择哪种方法,在复制数组时,请确保不要引用原始数组,否则修改新数组也将修改原始数组。