'2차원 배열 얕은 복사'에 해당되는 글 1건

  1. 2021.03.20 javascript 2차원배열의 얕은 복사

javascript 2차원배열의 얕은 복사

Ubuntu/삽질하기 2021. 3. 20. 16:13
let arr = [[1,2],[3,4]]
let arr2 = arr.slice()
arr2[0][0] = 5
//arr의 값은?

 

위의 문제에서 arr의 값은 아주 소름돋게도 [[5,2],[3,4]]가 된다.

arr.slice()함수가 원본배열을 그대로 복사해서 arr2에 넣어줘서 arr2의 값을 아무렇게나 바꿔줘도 원본 배열인 arr의 값은 안바뀔줄 알고 한참을 헤맸다... 그러다가 혹시나 하는 마음에 찍어 보니 원본배열을 바꾸고있었다!!! 

slice()함수가 배열안의 값을 하나씩 끄집어 내서 넣어주는 방식으로 복사가 이루어 지다보니 결국 arr2자체는 arr의 주소값을 참조하지 않지만 arr2의 요소 하나하나는 arr의 요소들의 주소값을 참조를 하고 있었던것이다.

따라서 for문을 이용해 복사를 해줘야한다... ㄷㄷ 소름

'Ubuntu > 삽질하기' 카테고리의 다른 글

그래픽 드라이버 nouveau 에서 nvidia로 변경하기  (0) 2021.02.23
: