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

자바스크립트로 문자열에서 짝수 길이 단어만 골라 반전하는 방법


문제 소개

문자열을 입력받아, 글자 수가 짝수인 단어만 골라 반전(reverse)시키는 자바스크립트 함수를 작성해 보겠습니다. 홀수 길이의 단어는 원래 상태 그대로 유지됩니다.

예를 들어 다음과 같은 문자열이 있다고 가정해 봅시다.

const str = 'This is an example string';

각 단어의 길이를 살펴보면 다음과 같습니다.

  • This → 4글자 (짝수)
  • is → 2글자 (짝수)
  • an → 2글자 (짝수)
  • example → 7글자 (홀수)
  • string → 6글자 (짝수)

따라서 반전해야 할 대상은 This, is, an, string 네 단어이며, example은 그대로 두게 됩니다.

This
is
an
string

구현 코드

위 문제를 해결하는 전체 코드는 다음과 같습니다.

const str = 'This is an example string';
const isEven = str => !(str.length % 2);
const reverseEvenWords = (str = '') => {
    const strArr = str.split(' ');
    return strArr.reduce((acc, val) => {
        if(isEven(val)){
            acc.push(val.split('').reverse().join(''));
            return acc;
        };
        acc.push(val);
        return acc;
    }, []).join(' ');
};
console.log(reverseEvenWords(str));

코드 동작 원리

코드가 어떤 순서로 동작하는지 단계별로 살펴보겠습니다.

  1. isEven 함수: 단어의 길이를 2로 나눈 나머지가 0인지 확인하여 짝수 여부를 판별합니다.
  2. split(' '): 문자열을 공백을 기준으로 나누어 단어 배열을 생성합니다.
  3. reduce(): 배열의 각 단어를 순회하면서 새로운 배열(acc)에 결과를 하나씩 누적합니다.
  4. 반전 처리: 짝수 길이 단어는 split('').reverse().join('') 조합을 통해 글자 순서를 뒤집습니다.
  5. join(' '): 마지막으로 배열을 다시 하나의 문자열로 합쳐 반환합니다.

실행 결과

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

sihT si na example gnirts

짝수 길이였던 This → sihT, is → si, an → na, string → gnirts로 반전된 것을 확인할 수 있으며, 홀수 길이인 example은 그대로 유지된 것을 볼 수 있습니다.