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

JavaScript 배열에서 모든 N번째 요소를 제거하는 방법

배열과 숫자 n을 인수로 받아, 배열에서 모든 n번째 요소를 제자리(in-place)에서 제거하는 함수 removeNth를 작성해야 한다고 가정해 보겠습니다.

이런 작업은 자바스크립트의 Array.prototype.splice() 메서드를 활용하면 간단하게 처리할 수 있습니다. 핵심은 반복문의 시작 인덱스와 증가 폭을 어떻게 설정하느냐에 있습니다.

예제 코드

const arr = ['T','h','a','i','s','b',' ','i','c','s',' ','a','t','h','e','e',' ','t','s','o','r','n','g','t',' ','t','n','h','a','s','t',' ','o','n','e','o','v','e','a','r',' ','f','e','n','a','d','s','p',','];
const removeNth = (arr, n) => {
    for(let i = n-1; i < arr.length; i += n){
        arr.splice(i, 1);
    };
};
removeNth(arr, 2);
console.log(arr);

코드 동작 원리

splice(i, 1)은 인덱스 i 위치의 요소 하나를 삭제합니다. 요소가 제거될 때마다 배열의 길이가 1씩 줄어들고 뒤쪽 요소들이 앞으로 한 칸씩 이동하기 때문에, 인덱스를 n씩 증가시키면 정확히 n번째 위치에 있는 요소들을 순서대로 제거할 수 있습니다. 위 예제에서는 n이 2이므로 배열의 짝수 번째(인덱스 1, 3, 5...) 요소들이 차례로 삭제됩니다.

실행 결과

위 코드를 실행하면 콘솔에 다음과 같이 출력됩니다.

[
    'T', 'a', 'i', 'b', ' ', 'c',
    's', 'a', 't', 'e', 'e', 't',
    's', 'r', 'n', 't', ' ', 'n',
    'h', 's', 't', 'o', 'n', 'o',
    'v', 'a', 'r', 'f', 'e', 'a',
    'd', 'p', ','
]