문장 문자열과 하나의 문자를 매개변수로 받아, 해당 문자로 시작하는 모든 단어만 뒤집는 JavaScript 함수를 작성해야 합니다.
문제 이해하기
예를 들어, 다음과 같은 문자열이 있다고 가정해 보겠습니다.
const str = 'hello world, how are you';
특정 문자 'h'로 시작하는 단어를 뒤집는다면,
출력 문자열은 다음과 같아야 합니다.
const output = 'olleh world, woh are you';
즉, "h"로 시작하는 단어인 hello와 how만 뒤집고, 나머지 단어들은 원래 그대로 유지하는 것입니다.
구현 코드
다음은 위 문제를 해결하는 전체 코드입니다.
const str = 'hello world, how are you';
const reverseStartingWith = (str, char) => {
const strArr = str.split(' ');
return strArr.reduce((acc, val) => {
if(val[0] !== char){
acc.push(val);
return acc;
};
acc.push(val.split('').reverse().join(''));
return acc;
}, []).join(' ');
};
console.log(reverseStartingWith(str, 'h'));코드 동작 원리
코드가 어떻게 동작하는지 단계별로 살펴보겠습니다.
- split(' '): 문자열을 공백을 기준으로 분리하여 각 단어로 이루어진 배열을 만듭니다.
- reduce(): 배열의 각 단어를 순회하면서 새로운 배열을 누적 생성합니다.
- val[0] !== char: 단어의 첫 글자가 지정한 문자와 다르면 해당 단어를 그대로 배열에 추가합니다.
- split('').reverse().join(''): 첫 글자가 지정한 문자와 일치하면 단어를 개별 문자로 분리한 뒤 순서를 반전시키고 다시 하나의 문자열로 합칩니다.
- join(' '): 처리가 완료된 모든 단어를 공백으로 연결하여 최종 문자열을 반환합니다.
출력 결과
콘솔에 출력되는 결과는 다음과 같습니다.
olleh world, woh are you