.splice() - 如何保护原始数组?
.splice() - how to protect oryginal array?
var a = [1, 2, 3];
var b = a; // b = [1, 2, 3];
console.log(a); // 1, 2, 3
console.log(b); // 1, 2, 3
b.splice(0, 1);
console.log(b); // 2, 3
console.log(a); // 2, 3 <----------- WHY?
我只需要复制原来的 "a" 数组,因为我想将它永远保留为 [1, 2, 3]。如何在不触及原始元素的情况下从 "b" 数组中弹出第一个元素?谢谢
您的代码只需要一个小的修复:
var a = [1, 2, 3];
var b = a.slice();
我不确定具体细节,但是当您将数组或对象分配给另一个变量时,array/object 不是按值复制,而是按引用复制。 .slice
方法将数组中的所有元素复制到新元素,而不是仅保存对旧元素的引用。
var a = [1, 2, 3];
var b = a; // b = [1, 2, 3];
console.log(a); // 1, 2, 3
console.log(b); // 1, 2, 3
b.splice(0, 1);
console.log(b); // 2, 3
console.log(a); // 2, 3 <----------- WHY?
我只需要复制原来的 "a" 数组,因为我想将它永远保留为 [1, 2, 3]。如何在不触及原始元素的情况下从 "b" 数组中弹出第一个元素?谢谢
您的代码只需要一个小的修复:
var a = [1, 2, 3];
var b = a.slice();
我不确定具体细节,但是当您将数组或对象分配给另一个变量时,array/object 不是按值复制,而是按引用复制。 .slice
方法将数组中的所有元素复制到新元素,而不是仅保存对旧元素的引用。