JavaScriptで文字列内の各数字の出現回数をカウントして保存する方法
問題の概要
次のように、数字だけで構成された文字列があるとします。
const str = '11222233344444445666';
この文字列を引数として受け取り、各数字が文字列内に何回出現したかを表すオブジェクトを返すJavaScript関数を作成する必要があります。
上記の文字列の場合、期待される出力は次のとおりです。
const output = {
"1": 2,
"2": 4,
"3": 3,
"4": 7,
"5": 1,
"6": 3
};
実装例
実際のコードは次のようになります。
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 を用意し、文字列を先頭から1文字ずつ順番に走査していきます。
ポイントとなるのは (map[str[i]] || 0) + 1 の部分です。ある数字がまだ一度も出現していない場合、map[str[i]] は undefined になりますが、論理和演算子(||)によって 0 に置き換えられます。そこへ 1 を加算することで、各数字の出現回数を正確にカウントできるのです。
出力結果
このコードを実行すると、コンソールには次のような出力が表示されます。
{ '1': 2, '2': 4, '3': 3, '4': 7, '5': 1, '6': 3 }
このように、オブジェクトのキーとして数字が自動的に整理され、それぞれの出現回数が値として保存されます。同様の手法は、文字列中の単語数の集計や配列要素の重複チェックなど、さまざまな場面で応用できます。
-
JavaScriptのconst宣言とは?再代入できない変数の基本と使い方を解説
JavaScriptのconst宣言は、値を再代入することも後から再宣言することもできない変数を作成するための構文です。constはES2015(ES6)で導入されました。 const宣言の主な特徴 一度値を代入すると、別の値に再代入することはできません。 同じ名前の変数を同じスコープ内で再宣言するとエラーになります。 宣言時に必ず初期値を代入する必要があります。 ブロックスコープ({}内でのみ有効)を持ちます。 それでは、JavaScriptにおけるconst宣言の実際のコードを見ていきましょう。 サンプルコード <!DOCTYPE html> <html>
-
JavaScriptで文字列内のアルファベットだけを反転する方法
問題の概要JavaScriptで、アルファベットといくつかの特殊文字(記号)が混在する文字列 str を受け取る関数を作成することを求められています。この関数は、入力文字列をもとに新しい文字列を返します。その際のルールは次のとおりです。アルファベット以外の文字(記号・数字など)は、元の位置にそのまま留まります。アルファベットの文字だけが、互いに反転した位置へ移動します。入力例と出力例たとえば、関数への入力が以下だった場合を考えてみましょう。入力const str = k_lmn_opq;出力const output = q_pon_mlk;「_」という記号は位置が変わっておらず、アルファベット