Computer >> 컴퓨터 >  >> 프로그래밍 >> JavaScript

JavaScript for 루프로 배열 역순으로 뒤집는 방법

이번 글에서는 배열을 입력받아 그 역순 배열을 반환하는 함수를 작성해 보겠습니다. reverse() 같은 내장 메서드 대신 for 루프를 직접 활용해 구현하는 방법을 단계별로 살펴봅니다.

예제 배열

먼저 다음과 같은 샘플 배열이 있다고 가정해 보겠습니다.

const arr = [7, 2, 3, 4, 5, 7, 8, 12, -12, 43, 6];

구현 코드

핵심 아이디어는 간단합니다. 원본 배열의 복사본을 만든 뒤, 복사본에서 요소를 하나씩 꺼내(pop()) 새로운 배열 끝에 추가하면 자연스럽게 역순 배열이 완성됩니다.

const arr = [7, 2, 3, 4, 5, 7, 8, 12, -12, 43, 6];

const reverse = (arr) => {
    // 원본 배열을 변경하지 않도록 복사본 생성
    const duplicate = arr.slice();
    const reversedArray = [];
    const { length } = arr;

    for (let i = 0; i < length; i++) {
        // 복사본의 마지막 요소를 꺼내 새 배열에 추가
        reversedArray.push(duplicate.pop());
    }

    return reversedArray;
};

console.log(reverse(arr));

코드 동작 원리

  • arr.slice(): 원본 배열을 그대로 유지하기 위해 얕은 복사본을 만듭니다. 이렇게 하면 함수 호출 후에도 원래 배열은 변하지 않습니다.
  • pop(): 배열의 마지막 요소를 제거하면서 반환합니다. 첫 반복에서는 6, 두 번째 반복에서는 43 순서로 꺼내지므로 결과적으로 역순이 됩니다.
  • push(): 꺼낸 요소를 결과 배열의 끝에 차례대로 추가합니다.

실행 결과

콘솔에 출력되는 결과는 다음과 같습니다.

[
    6, 43, -12, 12, 8,
    7, 5, 4, 3, 2,
    7
]

참고: 더 간단한 대안

실무에서는 [...arr].reverse()처럼 전개 연산자와 내장 reverse() 메서드를 조합하는 방법도 널리 사용됩니다. 다만 알고리즘 학습이나 코딩 테스트 준비 시에는 위와 같이 for 루프로 직접 구현하는 방식을 이해해 두는 것이 큰 도움이 됩니다.