Мне нужно создать копию массива, чтобы я мог вносить изменения в один массив, не затрагивая другой.
Например:
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 в новом массиве.
Что мне здесь не хватает?
Спасибо, парни!
используйте трюк JSON: b = JSON.parse(JSON.stringify(a)) сделает своего рода «глубокую копию», после чего вы сможете модифицировать b, не беспокоясь о a.



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


вам также нужно скопировать внутренние массивы:
var b = a.map(sub => sub.slice());
slice() делает мелкую копию, для уровней JSON.parse(JSON.stringify(a)) или рекурсию:
var a = [[[1]],[2],[3]];
var b = JSON.parse(JSON.stringify(a))
b[0][0][0] = 999;
console.info(a)
console.info(b)
slice()возвращает мелкая копия [...].