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

JavaScript에서 글자 수가 홀수인 단어만 반전시키는 방법

문자열을 입력받아, 그중 글자 수가 홀수인 단어만 골라 반전한 뒤 새로운 문자열로 반환하는 JavaScript 함수를 작성해 보겠습니다.

여기서 '단어'란 공백으로 구분되는 부분 문자열을 의미합니다. 즉, 양쪽이 공백으로 둘러싸여 있거나, 문자열의 맨 앞 또는 맨 뒤에 위치하면서 한쪽에만 공백이 인접한 부분까지 모두 단어로 간주합니다.

구현 아이디어

이 문제는 다음과 같은 순서로 해결할 수 있습니다.

  1. split(' ') 메서드로 문자열을 공백 기준으로 분리해 배열을 만듭니다.
  2. reduce()를 사용해 각 단어를 순회하며 글자 수가 홀수인지 확인합니다.
  3. 홀수인 단어는 split('').reverse().join('') 조합으로 문자를 뒤집고, 짝수인 단어는 그대로 유지합니다.
  4. 마지막에 join(' ')으로 배열을 다시 하나의 문자열로 합칩니다.

예제 코드

const str = 'hello world, how are you';
const isOdd = str => str.length % 2 === 1;
const reverseOddWords = (str = '') => {
   const strArr = str.split(' ');
   return strArr.reduce((acc, val) => {
       if(isOdd(val)){
           acc.push(val.split('').reverse().join(''));
           return acc;
       };
       acc.push(val);
       return acc;
   }, []).join(' ');
};
console.log(reverseOddWords(str));

실행 결과

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

olleh world, woh era uoy

결과를 자세히 살펴보면 'hello'(5자), 'how'(3자), 'are'(3자), 'you'(3자)처럼 글자 수가 홀수인 단어만 반전되었고, 'world,'(6자)처럼 글자 수가 짝수인 단어는 원형 그대로 유지된 것을 확인할 수 있습니다. 이처럼 split, reduce, reverse 세 가지 메서드만 조합하면 별도의 복잡한 정규식 없이도 원하는 조건의 단어만 손쉽게 가공할 수 있습니다.