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

JavaScript split() 메서드를 특정 인덱스부터 시작하도록 구현하는 방법

공식 String.prototype.split() 메서드에는 문자열을 인덱스 1 또는 임의의 인덱스 n부터 분할하는 기능이 기본적으로 제공되지 않습니다. 하지만 split()을 사용하는 방식을 조금만 응용하면 원하는 동작을 충분히 구현할 수 있습니다.

접근 방법

핵심 아이디어는 두 개의 배열을 만드는 것입니다.

  • ACTUAL 배열: 문자열 전체(0부터 끝까지)를 분할한 결과
  • LEFTOVER 배열: 시작 위치(STARTPOSITION)까지 0부터 분할한 결과

이후 LEFTOVER 배열의 각 요소를 순회하면서 ACTUAL 배열에서 해당 요소를 제거(splice)합니다. 그러면 ACTUAL 배열은 사실상 STARTINDEX부터 끝까지 분할된 것과 같은 결과를 갖게 됩니다.

예제 코드

const string = 'The quick brown fox jumped over the wall';
const returnSplittedArray = (str, startPosition, seperator=" ") => {
    const leftOver = str.split(seperator, startPosition);
    const actual = str.split(seperator);
    leftOver.forEach(left => {
        actual.splice(actual.indexOf(left), 1);
    })
    return actual;
}
console.log(returnSplittedArray(string, 5, " "));

실행 결과

["over", "the", "wall"]

위 예제에서는 공백(" ")을 구분자로 사용하고, 시작 위치를 5로 지정했습니다. 따라서 앞의 다섯 단어("The", "quick", "brown", "fox", "jumped")가 제거되고, 여섯 번째 단어부터 나머지 단어들만 배열로 반환됩니다.

이 방식은 split()의 두 번째 인자(limit)를 활용해 앞부분을 잘라내고, 이를 원본 배열에서 제거하는 간단한 트릭으로 특정 인덱스부터 분할하는 효과를 얻습니다. 다만 중복된 단어가 있을 경우 indexOf가 첫 번째 일치 항목을 찾기 때문에 의도와 다른 요소가 제거될 수 있다는 점은 유의해야 합니다.