JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで文字列内の母音と子音を数える方法

JavaScriptで母音と子音の数をカウントする

この記事では、英語のアルファベットを含む文字列を受け取り、その中に含まれる母音(vowels)子音(consonants)の数をオブジェクトとして返すJavaScript関数の作成方法を解説します。

実装のポイントは以下の通りです。

  • 文字列を1文字ずつ分解して処理する
  • 大文字・小文字を区別せずに判定する
  • アルファベット以外の記号や空白はカウント対象から除外する

それでは、実際のコードを見ていきましょう。

サンプルコード

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));

コードの解説

この関数の仕組みを順番に見てみましょう。

  1. str.split(''): 文字列を1文字ずつ配列に分割します。
  2. reduce(): 配列の各要素に対して畳み込み処理を行い、最終的に { vowels, consonants } オブジェクトを返します。初期値は { vowels: 0, consonants: 0 } です。
  3. アルファベット判定: val.toLowerCase() === val.toUpperCase() が成立する場合、その文字は大文字小文字の変化がないため、数字や記号・空白などアルファベット以外と判断され、カウントせずスキップされます。
  4. 母音判定: 文字列 'aeiou' に含まれるかどうかを includes() で確認し、含まれていれば母音、そうでなければ子音としてカウントします。

出力結果

コンソールには以下のように表示されます。

{ vowels: 17, consonants: 29 }

この例では、サンプル文字列に母音が17個、子音が29個含まれていることが分かります。

まとめ

split()reduce() を組み合わせることで、シンプルかつ効率的に文字列内の母音・子音をカウントできます。同様のロジックを応用すれば、特定の文字の出現回数集計や、テキスト解析ツールなどにも発展させることが可能です。

  1. JavaScriptの分割代入を使った関数パラメータの受け渡し方法

    JavaScriptでは、関数にオブジェクトを引数として渡す際、「分割代入(デストラクチャリング)」と呼ばれる構文を利用することで、オブジェクトの各プロパティを個別の変数として受け取ることができます。 さらに、各プロパティにデフォルト値を指定しておけば、対応するプロパティが存在しない場合でもエラーにならず、あらかじめ設定した値が使用されます。これにより、安全で柔軟な関数設計が可能になります。 サンプルコード 以下は、分割代入を使って関数のパラメータを受け取るJavaScriptのコード例です。 <!DOCTYPE html> <html lang="en&quo

  2. 【初心者向け】JavaScriptでインポートとエクスポートの名前を変更する方法

    JavaScriptにおけるインポートとエクスポートの名前変更とはJavaScriptのESモジュールでは、asキーワードを使うことで、エクスポートやインポートの際に関数や変数に別名を付けることができます。モジュール側の元の名前はそのまま維持しながら、利用する側では分かりやすい名前で扱えるため、コードの可読性と保守性が向上します。注意:このサンプルを実行するには、ローカルホストサーバー環境が必要です。HTMLファイルを直接ブラウザで開くと、CORSポリシーの制限によりモジュールの読み込みが失敗する場合があるためご注意ください。コード例index.html<!DOCTYPE html>