Javascript - 修改数组重复项而不修改原始数组

pie*_*ara 1 javascript

我确信这是一件愚蠢的事情,但我无法解决它。

如果我这样做:

var arr = [1, 2, 3, "up"];
var duplicate = arr;
duplicate[3] = "down";
console.log(arr[3]); //"down"
console.log(duplicate[3]); //"down"
Run Code Online (Sandbox Code Playgroud)

那么为什么原始数组也被修改了呢?这与它们指向同一个数组有关吗?

如何只修改重复项?

c0d*_*nja 5

您需要克隆您的duplicate数组...您可以使用以下slice()方法来做到这一点:

var arr = [1, 2, 3, "up"];
var duplicate = arr.slice(0);
duplicate[3] = "down";
console.log(arr[3]); //"up"
console.log(duplicate[3]); //"down"
Run Code Online (Sandbox Code Playgroud)