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

JavaScript로 문자열의 인접한 단어 위치 바꾸기

개요

이번 글에서는 문자열을 입력받아 인접한 두 단어의 위치를 서로 교환하는 JavaScript 함수를 작성하는 방법을 알아보겠습니다.


예를 들어, 입력 문자열이 다음과 같다면 −

const str = "This is a sample string only";

출력 결과는 아래와 같아야 합니다 −

"is This sample a only string"

구현 방법

이 문제는 split() 메서드로 문자열을 단어 배열로 분리한 뒤, reduce()를 활용해 짝수 인덱스의 단어와 그 다음 단어의 순서를 바꿔가며 새로운 문자열을 조립하는 방식으로 해결할 수 있습니다.

예제 코드

다음은 전체 구현 코드입니다 −

const str = "This is a sample string only";
const replaceWords = str => {
   return str.split(" ").reduce((acc, val, ind, arr) => {
      if(ind % 2 === 1){
         return acc;
      }
      acc += ((arr[ind+1] || "") + " " + val + " ");
      return acc;
   }, "");
};
console.log(replaceWords(str));

출력 결과

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

is This sample a only string

코드 동작 원리

  • split(" "): 문자열을 공백을 기준으로 분리하여 각 단어로 이루어진 배열을 생성합니다.
  • reduce() 순회: 배열을 순회하면서 홀수 인덱스(ind % 2 === 1)인 경우에는 건너뛰고, 짝수 인덱스에서 현재 단어와 그 다음 단어의 순서를 서로 바꿔 누적 문자열에 추가합니다.
  • 예외 처리: arr[ind+1] || "" 부분은 단어의 개수가 홀수일 때 마지막 인덱스 이후의 값이 undefined가 되는 것을 방지하기 위해 빈 문자열로 대체 처리합니다.

이러한 방식으로 별도의 임시 변수 없이도 함수형 프로그래밍 스타일로 인접 단어 교환이 가능합니다.