JavaScriptで数字文字列から各数字の出現回数を持つオブジェクトを作成する方法
はじめに
JavaScriptでは、数字のみで構成された文字列から「それぞれの数字が何回出現したか」を集計したオブジェクトを作りたい場面があります。本記事では、そのような処理をシンプルなコードで実装する方法を解説します。
問題設定
例として、次のような数字の文字列を考えてみましょう。
const str = '11222233344444445666';
この文字列を受け取り、各数字の出現回数を表すオブジェクトを返す関数を作成します。期待される出力は以下のとおりです。
const output = {
"1": 2,
"2": 4,
"3": 3,
"4": 7,
"5": 1,
"6": 3
};
実装方法
最もシンプルなアプローチは、forループで文字列を1文字ずつ走査し、オブジェクトにキーとして記録しながらカウントを加算していく方法です。
コード例
const str = '11222233344444445666';
const mapString = str => {
const map = {};
for(let i = 0; i < str.length; i++){
map[str[i]] = (map[str[i]] || 0) + 1;
}
return map;
};
console.log(mapString(str));
コードのポイント
この実装の肝となるのは (map[str[i]] || 0) + 1 の部分です。論理和演算子(||)を使うことで、対象の数字がまだオブジェクトに存在しない場合でも undefined を回避し、初期値 0 として扱えます。すでにキーが存在する場合は既存の値に1を加算するため、正確な出現回数をカウントできる仕組みです。
実行結果
コンソールには次のように出力されます。
{ '1': 2, '2': 4, '3': 3, '4': 7, '5': 1, '6': 3 }
まとめ
文字列をループで走査し、オブジェクトのキーごとに出現回数を加算するだけで、数字の頻度集計オブジェクトを簡単に作成できます。この手法は数字に限らず、任意の文字列内の文字カウントなど、さまざまな場面に応用できる汎用的なテクニックです。
-
JavaScriptで日付文字列からDateオブジェクトを作成する方法
日付文字列からDateオブジェクトを作成する基本JavaScriptでは、Dateコンストラクタに引数を渡すだけで、簡単に日付オブジェクトを作成できます。var date = new Date(2018, 1, 1);ここで重要なポイントは、月の指定が「0」から始まるインデックスになっていることです。つまり、0が1月(Jan)、1が2月(Feb)、2が3月(Mar)というように対応します。この仕様を忘れると、意図した日付より1ヶ月ずれた結果になってしまうため注意が必要です。サンプルコード以下のコードは、2018年1月1日のDateオブジェクトを作成し、画面に出力する例です。月の部分が「0」にな
-
文字列をJavaScriptオブジェクトに変換する方法【JSON.parse()の使い方】
JavaScriptでJSON形式の文字列をオブジェクトに変換するには、JSON.parse()メソッドを使用します。このメソッドは、引数に渡された文字列を解析(パース)し、対応するJavaScriptオブジェクトを返します。 サンプルコード <!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport content=width=device-width, initial-scale=1.0 /> <title>Docum