我需要创建一个数组的副本,以便我可以在一个数组上进行修改而不会影响另一个数组。
例如:
var a = [[1],[2],[3]];
var b = a.slice(0);
b[1].push(100);
b // [[1],[2, 100],[3]];
a // expect: [[1],[2],[3]]; , actual: [[1],[2, 100],[3]];
我也尝试过:
var b = new Array(a);
但是这会将所有[1],[2],[3]放在新数组的索引0中。
我在这里错过了什么?
多谢你们!
你还必须复制内部数组:
var b = a.map(sub => sub.slice());
slice()
制作浅层副本,n级,你可以使用JSON.parse(JSON.stringify(a))
或递归:
var a = [[[1]],[2],[3]];
var b = JSON.parse(JSON.stringify(a))
b[0][0][0] = 999;
console.log(a)
console.log(b)