🗃️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