JavaScript에서 알파벳을 포함할 수 있는 문자열을 입력받아, 그 안에 존재하는 모음(vowel)의 개수를 세어 반환하는 함수를 작성해야 합니다.
접근 방식
이 문제는 다음과 같은 단계로 해결할 수 있습니다.
먼저 입력받은 문자열을 toLowerCase() 메서드를 사용해 모두 소문자로 변환합니다. 이렇게 하면 대문자와 소문자를 구분하지 않고 모음을 확인할 수 있습니다.
다음으로 모음 문자들을 담은 기준 문자열(legend)인 'aeiou'를 준비합니다. 그런 다음 반복문을 통해 문자열의 각 문자를 하나씩 확인하며, 해당 문자가 기준 문자열에 포함되어 있으면 카운트를 증가시킵니다.
예제
다음은 전체 코드입니다 −
const str = 'this is a string';
const countVowels = (str = '') => {
str = str.toLowerCase();
const legend = 'aeiou';
let count = 0;
for(let i = 0; i < str.length; i++){
const el = str[i];
if(!legend.includes(el)){
continue;
};
count++;
};
return count;
};
console.log(countVowels(str));출력 결과
콘솔에 출력되는 결과는 다음과 같습니다 −
4
코드 설명
위 코드에서 사용된 문자열 'this is a string'에는 모음이 총 4개(i, i, a, i) 포함되어 있으므로 결과값으로 4가 출력됩니다.
화살표 함수(arrow function) 형태로 작성된 countVowels 함수는 매개변수에 기본값으로 빈 문자열('')을 지정하여, 인자가 전달되지 않았을 때 발생할 수 있는 오류를 방지합니다. 또한 includes() 메서드를 활용해 각 문자가 모음 목록에 속하는지 간결하게 판별하며, 모음이 아닌 경우 continue 문으로 다음 문자로 넘어갑니다.
이 방식 외에도 정규표현식과 match() 메서드를 조합하거나, filter() 메서드를 사용하는 등 다양한 방법으로 같은 결과를 얻을 수 있습니다.