使用 Array.prototype.slice() 深度复制数组

Deep copy an array with Array.prototype.slice()

本文关键字:深度 复制数组 slice Array prototype 使用      更新时间:2023-09-26

我知道我们可以使用 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);