Javascript:使用slice()创建数组的副本;

问题描述 投票:0回答:2

我需要创建一个数组的副本,以便我可以在一个数组上进行修改而不会影响另一个数组。

例如:

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中。

我在这里错过了什么?

多谢你们!

javascript arrays
2个回答
2
投票

你还必须复制内部数组:

 var b = a.map(sub => sub.slice());

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)
© www.soinside.com 2019 - 2024. All rights reserved.