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

JavaScript로 문자열의 모음과 자음 개수 구하는 방법

영어 알파벳으로 이루어진 문자열을 입력받아, 그 안에 포함된 모음(vowel)과 자음(consonant)의 개수를 객체 형태로 반환하는 JavaScript 함수를 작성해 보겠습니다.

이 문제는 split()으로 문자열을 개별 문자 배열로 나눈 뒤, reduce()를 활용해 각 문자를 순회하면서 카운트를 누적하는 방식으로 간결하게 해결할 수 있습니다.

예제 코드

전체 코드는 다음과 같습니다.

const str = 'This is a sample string, will be used to collect some data';
const countAlpha = str => {
    return str.split('').reduce((acc, val) => {
        const legend = 'aeiou';
        let { vowels, consonants } = acc;
        if(val.toLowerCase() === val.toUpperCase()){
            return acc;
        };
        if(legend.includes(val.toLowerCase())){
            vowels++;
        }else{
            consonants++;
        };
        return { vowels, consonants };
    }, {
        vowels: 0,
        consonants: 0
    });
};
console.log(countAlpha(str));

코드 설명

  • str.split('') — 문자열을 한 글자씩 분리한 배열로 만듭니다.
  • reduce() — 초기값 { vowels: 0, consonants: 0 }에서 시작해 각 문자를 처리하며 카운트를 누적합니다.
  • val.toLowerCase() === val.toUpperCase() — 공백이나 쉼표처럼 알파벳이 아닌 문자는 대소문자 변환 결과가 서로 같으므로, 이 조건으로 걸러내어 건너뜁니다.
  • legend.includes(val.toLowerCase()) — 대소문자 구분 없이 모음('aeiou')에 포함되는지 확인하여, 모음이면 vowels를, 아니면 consonants를 증가시킵니다.

실행 결과

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

{ vowels: 17, consonants: 29 }

이처럼 reduce()를 활용하면 별도의 반복문 변수 없이도 선언적으로 문자 내 모음·자음 개수를 깔끔하게 집계할 수 있습니다.