所以,这并不像我预期的那样:
var x = [1,2,3];
var y = x;
y.push(4);
console.log(x);
我以为它会记录 [1,2,3] 但它记录 [1,2,3,4]!我需要的是有一个函数,只为 y 添加值,而不是 x - 我希望能够处理 [1,2,3] 数组,但也能够“回到它”并且取消所做的更改。我希望这有足够的意义......
最佳答案
var x = [1,2,3];
var y = x.slice();
y.push(4);
console.log(x); // Outputs 1,2,3
使用slice
是获取数组副本的最简单方法。
请记住,在 Javascript 中,x
和 y
是对数组的引用。在这一点上,Javascript 的行为与 PHP 等不同。
因此,当您执行 y.push(4)
时,您会将一个元素插入 x
引用的同一数组中。
关于Javascript Push() 方法更改引用数组中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14924933/