🗃️javascript/프로그래머스

배열 뒤집기(Lv.0)배열을 뒤집는 3가지 방법(reverse()-> 기존 배열 변경)

하얀성 2022. 12. 28. 14:40

1. for 반복문 사용

const reverse = [];
for(let i=arr.length-1; i >= 0; i--) {
  reverse.push(arr[i]);

 

반복문을 사용하여 배열을 거꾸로 뒤집었습니다.


-> .push와 .shift로 뒤집으려 했는데 이해가 부족한듯 싶다.

계속 저렇게 거꾸로 값들을 반복적으로 불러와서 다른 저장배열에 값을 푸시했어야했다.

 

난 기존 배열에서 맨 첫값을 맨 뒤에 push 해주고 그 자리의 값을 삭제하려 했는데... 

값이 남아 있는듯 하다.

 


2. reverse() 함수

reverse() 함수는 배열의 순서를 거꾸로 만들어 줍니다.

array.reverse()

이 함수는 이 함수를 호출한 배열을 거꾸로 뒤집고, 그 배열을 가리키는 참조값을 반환합니다.

따라서, 이 함수를 실행시키면 원본 배열이 변형됩니다.

 

-> 이 함수 써서 뒤집었다. 


 

 

3. reverse() 함수 - 원본 배열 유지하기

reverse() 함수를 사용하면 원본 배열이 변형됩니다.

원본 배열은 그대로 유지하고, 리턴되는 값만 변경하고 싶을 때는

원본 배열을 복사해서 사용해야 합니다.

const reverse = [...arr].reverse();

 

위 예제는 원본 배열을 복사해서, 

복사한 배열에 reverse() 함수를 적용하였습니다.

 

[...arr].reverse()

배열을 복사하기 위해서 spread operator(전개 연산자)를 사용하였습니다.

'...'이 spread operator(전개 연산자)입니다.

spread operator(전개연산자)는 배열이나 객체에서 element들을 꺼내어, 복사해줍니다.

즉, 위 코드에서

[...arr] 구문은, 원본 배열인 arr를 복사한 새로운 배열입니다.

새로 복사한 [...arr]를 reverse 했으니, 

원본 배열인 arr는 변경이 되지 않겠죠?

 

설명출처 : https://hianna.tistory.com/448