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

JavaScriptで大文字と小文字を区別せずに各文字の出現回数をカウントする方法

文字列が与えられ、その中に含まれる各文字の出現回数(頻度)を返す関数を作成することを考えます。ただし、このとき大文字と小文字の違いは区別しないものとします。

例えば「A」と「a」は同じ文字として扱い、まとめてカウントする必要があります。

実装のアプローチ

これを実現する最もシンプルで効率的な方法は、文字列を1文字ずつ反復処理しながら、「文字をキー」「出現回数を値」と持つオブジェクトを作成していくことです。

ポイントは、処理の前に toLowerCase() メソッドを使って文字列全体を小文字に変換しておくことです。これにより、大文字・小文字を問わず同じ文字として集計できます。

コード例

const string = 'ASASSSASAsaasaBBBASvcdNNSASASxxzccxcv';
const countFrequency = str => {
    const frequency = {};
    for(char of str.toLowerCase()){
        if(!frequency[char]){
            frequency[char] = 1;
        }else{
            frequency[char]++;
        };
    };
    return frequency;
};
console.log(countFrequency(string));

コードの解説

  • str.toLowerCase(): 文字列をすべて小文字に変換し、大文字と小文字の違いをなくします。
  • for...of ループ: 変換後の文字列を1文字ずつ順番に取り出します。
  • frequency オブジェクト: 各文字が初登場したときは値を 1 に設定し、2回目以降はインクリメント(+1)していきます。

出力結果

上記のコードをコンソールで実行すると、次のような結果が表示されます。

{ a: 10, s: 11, b: 3, v: 2, c: 4, d: 1, n: 2, x: 3, z: 1 }

このように、元の文字列に含まれる大文字と小文字がすべて統合され、各文字の合計出現回数がオブジェクトとして正しく取得できていることがわかります。

  1. JavaScriptで大文字と小文字が混在する文字列を小文字に変換する方法|自作関数convertToLower()の実装

    はじめにJavaScriptには文字列を小文字に変換する標準メソッドtoLowerCase()が用意されていますが、本記事では、ASCIIコードを直接操作することで、大文字と小文字が混在する文字列をすべて小文字に変換する独自の関数convertToLower()を実装する方法を解説します。問題文字列に対して呼び出すと、その文字列内の大文字(A〜Z)をすべて小文字(a〜z)へ変換し、新しい文字列として返すJavaScript関数 convertToLower() を作成します。たとえば、関数への入力と期待される出力は以下のとおりです。入力:const str = ABcD123;出力:const

  2. JavaScriptで文字列内の文字を英字・数字・特殊文字に再グループ化する方法

    問題文字列 str を第一引数(唯一の引数)として受け取る JavaScript 関数を作成する必要があります。この文字列には、次の3種類の文字が含まれる可能性があります。英字:(A-Z)、(a-z)数字:0〜9特殊文字:上記以外のすべての文字関数は文字列を先頭から順に走査し、ちょうど3つの要素からなる配列を構築します。1番目の要素には文字列に含まれるすべての英字、2番目には数字、3番目には特殊文字を格納し、それぞれ元の文字列内での出現順(相対的な順序)を維持します。最後にこの配列を返します。例えば、関数への入力が次の場合を考えてみましょう。入力const str = thi!1s is S@