JavaScriptで文章中に特定の文字が何回出現するかを数える方法
この記事では、JavaScriptを使って「指定した1つの文字が文章の中に何回出現するか」を数える関数の実装方法を解説します。初心者にもわかりやすいforループによる基本的なアプローチから、より簡潔に書けるモダンな手法まで順番に紹介していきます。
基本の実装例:forループでカウントする
まずは最もオーソドックスな方法です。文字列を1文字ずつ走査し、対象の文字と一致した回数をカウントします。コードは以下の通りです。
const string = 'This is just an example string for the program';
const countAppearances = (str, char) => {
let count = 0;
for(let i = 0; i < str.length; i++){
if(str[i] !== char){
// 一致しない場合は次の反復へスキップ
continue;
};
// ここに到達したということは str[i] と char が同じ文字
// なのでカウントを増やす
count++;
};
return count;
};
console.log(countAppearances(string, 'a'));
console.log(countAppearances(string, 'e'));
console.log(countAppearances(string, 's'));出力結果
コンソールには次のように表示されます。
3 3 4
'a'は3回、'e'は3回、's'は4回出現していることが確認できます。
コードの解説
- countAppearances は、調査対象の文字列
strと、数えたい1文字charを引数として受け取ります。 - カウンター用の変数
countを0で初期化します。 forループで文字列を先頭から末尾まで1文字ずつ確認し、str[i] !== char(不一致)の場合はcontinueで以降の処理をスキップして次の文字へ進みます。- 文字が一致した場合のみ
count++でカウントを増やし、ループ完了後に合計値を返します。
別の実装方法
forループ以外にも、標準メソッドを活用すればより短く書けます。
split() を使う方法
対象の文字で文字列を分割すると、その要素数から出現回数を求められます。
const countWithSplit = (str, char) => str.split(char).length - 1; console.log(countWithSplit(string, 'a')); // 3
filter() を使う方法
スプレッド構文で文字列を配列化し、条件に合う要素だけを抽出して数える方法です。
const countWithFilter = (str, char) => [...str].filter(c => c === char).length; console.log(countWithFilter(string, 's')); // 4
まとめ
特定の文字の出現回数を数える処理は、for ループによる手続き的な書き方でも、split() や filter() を使った宣言的な書き方でも実装できます。どの方法も計算量は文字列の長さに比例するため O(n) となり、用途や可読性の好みに応じて使い分けるとよいでしょう。
-
JavaScriptで特定の文字で始まる単語を配列から検索する方法
JavaScriptでは、文字列の配列を第1引数として受け取り、単一の文字を第2引数として受け取る関数を作成することが求められるケースがあります。この関数は、第2引数で指定された文字で始まる、配列内の最初の要素を見つけ出し、そのインデックスを返す必要があります。該当する要素が存在しない場合は -1 を返すのが一般的です。実装例以下のコードは、forループで配列を先頭から順に走査し、各要素の先頭1文字が指定された文字と一致するかどうかを判定する、最も基本的な実装です。const names = [Naman, Kartik, Anmol, Rajat, Keshav, Harsh, Suresh
-
JavaScriptで文字列を特定の回数だけ繰り返す方法
JavaScriptでは、文字列と数値を引数として受け取り、その文字列を指定された回数だけ繰り返した新しい文字列を返す関数を書くことが求められるケースがあります。本記事では、その実装方法をわかりやすく解説します。問題の概要ここで必要なのは、次のような仕様を持つJavaScript関数です。第1引数に文字列、第2引数に繰り返し回数(数値)を受け取る入力文字列を第2引数で指定された回数だけ繰り返す繰り返した結果の新しい文字列を返す実装例以下は、ループ処理を使って文字列を繰り返すコード例です。const str = this; const num = 8; const repeatSpecific