문자열을 입력받아 문자열 끝에 도달할 때까지 인접한 단어들을 서로 맞바꾸는 JavaScript 함수를 작성해야 합니다. 예를 들어 "A B C D"라는 문자열이 주어지면 "B A D C"처럼 홀수 번째와 짝수 번째 단어의 위치가 서로 교환됩니다.
예제
이를 구현한 코드는 다음과 같습니다.
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));
코드 설명
위 코드는 다음과 같은 단계로 동작합니다.
- split(" "): 문자열을 공백을 기준으로 분리하여 단어 배열을 생성합니다.
- reduce(): 배열을 순회하면서 교환된 단어들을 하나의 문자열로 누적합니다.
- ind % 2 === 1: 홀수 인덱스의 단어는 바로 앞 짝수 인덱스 단어와 함께 이미 처리되었으므로 건너뜁니다.
- (arr[ind+1] || ""): 마지막 단어가 홀수 개일 때 짝이 없는 단어는 빈 문자열로 대체하여 오류 없이 처리합니다.
출력
콘솔에 출력되는 결과는 다음과 같습니다.
is This sample a only string