1차원 배열을 깊은 복사할 때는
const arr = [1];
const arr2 = arr.slice();
slice메서드를 통해 메모리에서 참조하는 객체를 다르게 하는 것이 가능했다.
하지만 2차원 배열에서 이 방법을 똑같이 사용한다면
const arr1 = [[1,2],[1,2,3]];
const arr2 = arr1.slice();
arr2[1][1] = 5;
console.log(arr1);
// [ [ 1, 2 ], [ 1, 5, 3 ] ]
1차원 배열은 복사가 되지만 2번째 depth배열은 얕은 복사가 되어버린다.
이를 해결하기 위해서는 map메서드를 사용할 수 있다.
const arr1 = [[1,2],[1,2,3]];
const arr2 = arr1.map((v) => [...v]);
arr2[1][1] = 5;
console.log(arr1);
// [ [ 1, 2 ], [ 1, 2, 3 ] ]