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

JavaScript 문자열에서 홀수·짝수 위치 문자를 분리하는 방법


자바스크립트(JavaScript)에서 문자열의 첫 번째 문자부터 시작해 매 두 번째 문자를 제거하고, 제거된 문자들을 모두 문자열 끝에 이어 붙이는 함수를 작성해 보겠습니다. 이 작업은 본질적으로 문자열을 홀수 인덱스 문자와 짝수 인덱스 문자로 분리한 뒤 순서를 바꿔 합치는 것과 같습니다.

문제 이해하기

먼저 예시를 통해 동작 방식을 확인해 보겠습니다.

입력 문자열: "This is a test!"
변환 결과: "hsi etTi sats!"

즉, 인덱스가 홀수인 문자들(두 번째, 네 번째, 여섯 번째 문자 등)을 먼저 모아 앞쪽에 배치하고, 인덱스가 짝수인 문자들은 그 뒤에 순서대로 이어 붙이면 됩니다.

구현 예제

const string = 'This is a test!';
const separateString = (str) => {
    const { first, second } = [...str].reduce((acc, val, ind) => {
        const { first, second } = acc;
        return {
            first: ind % 2 === 1 ? first + val : first,
            second: ind % 2 === 0 ? second + val : second
        };
    }, {
        first: '',
        second: ''
    });
    return first + second;
};
console.log(separateString(string));

코드 동작 원리

  • [...str] — 스프레드 연산자를 사용해 문자열을 개별 문자 배열로 변환합니다.
  • reduce() — 배열을 순회하면서 각 문자를 인덱스(ind) 값에 따라 두 개의 그룹으로 나눕니다.
  • ind % 2 === 1 — 인덱스가 홀수인 문자는 first에 누적됩니다.
  • ind % 2 === 0 — 인덱스가 짝수인 문자는 second에 누적됩니다.
  • 마지막으로 first + second를 반환해 홀수 인덱스 문자들이 앞에, 짝수 인덱스 문자들이 뒤에 배치된 새로운 문자열을 완성합니다.

실행 결과

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

hsi etTi sats!

이처럼 reduce()와 스프레드 연산자만 활용하면 별도의 반복문 없이도 문자열 내 문자들을 간결하고 가독성 있게 재배치할 수 있습니다.