使用 Array.prototype.slice() 深度复制数组
Deep copy an array with Array.prototype.slice()
我知道我们可以使用 Array.prototype.slice() 对数组执行深拷贝。
var a = [1,2];
var b = a.slice();
b.push(3);
console.log(a);
结果:
[1,2]
但在我的例子中,我用它对对象数组执行深拷贝。结果出乎我的意料。
var a = [{},{"chosen": true}];
var b = a.slice();
b[0]["propa"] = 1;
console.log(a);
结果:
[{"propa":1},{"chosen":true}]
有人告诉我如何解决这种情况。谢谢。
您可以使用 JSON 对象对数组进行序列化和反序列化。
var a = [{},{"chosen": true}];
var b = JSON.parse(JSON.stringify(a));
b[0]["propa"] = 1;
console.log(a);
我知道我们可以使用 Array.prototype.slice() 对数组执行深拷贝。
var a = [1,2];
var b = a.slice();
b.push(3);
console.log(a);
结果:
[1,2]
但在我的例子中,我用它对对象数组执行深拷贝。结果出乎我的意料。
var a = [{},{"chosen": true}];
var b = a.slice();
b[0]["propa"] = 1;
console.log(a);
结果:
[{"propa":1},{"chosen":true}]
有人告诉我如何解决这种情况。谢谢。
您可以使用 JSON 对象对数组进行序列化和反序列化。
var a = [{},{"chosen": true}];
var b = JSON.parse(JSON.stringify(a));
b[0]["propa"] = 1;
console.log(a);