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

时间:2016-07-13 19:09:37

标签: javascript deep-copy

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

有人告诉我如何在这种情况下解决问题。感谢。

1 个答案:

答案 0 :(得分:3)

您可以使用JSON对象序列化和反序列化数组。

var a = [{},{"chosen": true}];
var b = JSON.parse(JSON.stringify(a));
b[0]["propa"] = 1;
console.log(a);