我需要创建一个数组副本,以便可以对一个数组进行修改而不会影响另一个数组。
例如:
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中。
我在这里想念什么?
谢谢大家!
答案 0 :(得分:2)
您还必须复制内部数组:
var b = a.map(sub => sub.slice());
答案 1 :(得分:0)
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)