JavaScriptで0からnまで数えるときに「9」が出現する回数を数える方法
問題
数値 n を引数として受け取るJavaScript関数を作成します。この関数は、0からnまで順番に数えていく過程で、数字の「9」が何回登場するかを数え、その合計回数を返す必要があります。
解決のアプローチ
この問題は、次の手順でシンプルに解決できます。
- 0からnまでの各数値を文字列に変換する
- 変換した文字列の中に「9」が何文字含まれているかを調べる
- すべての数値分のカウントを合計して返す
文字列内の特定の文字を数えるには、split('') で1文字ずつ分解し、reduce() を使って一致する文字をカウントする方法が有効です。
コード例
以下が実際のコードです。
const num = 100;
const countNine = (num = 0) => {
const countChar = (str = '', char = '') => {
return str
.split('')
.reduce((acc, val) => {
if(val === char){
acc++;
};
return acc;
}, 0);
};
let count = 0;
for(let i = 0; i <= num; i++){
count += countChar(String(i), '9');
};
return count;
};
console.log(countNine(num));
コードの解説
- countChar関数: 文字列を
split('')で1文字ずつの配列に分割し、reduce()を使って指定された文字(ここでは「9」)と一致する回数を数えるヘルパー関数です。 - countNine関数: 0からnumまでforループで繰り返し処理を行い、各数値を
String(i)で文字列化して「9」の個数を累積していきます。
出力
上記のコードを実行すると、コンソールには次のように出力されます。
20
結果の解説
0から100まで数える場合、一の位に「9」が現れるのは 9, 19, 29, … , 99 の10回です。さらに十の位に「9」が現れるのは 90〜99 の10回です。これらを合計すると、ちょうど20回になります。
-
JavaScriptのNumber()関数とは?使い方とサンプルコードを解説
JavaScriptのNumber()関数は、引数として渡された値やオブジェクトを、それに対応する数値へ変換するための関数です。真偽値や文字列型の数字、さらにはDateオブジェクトなども数値に変換できるため、データ型の変換処理において非常に便利な組み込み関数の一つです。例えば、Number(true)は「1」、Number(false)は「0」を返します。また、数字のみで構成された文字列「149」を渡せば数値の149に変換され、new Date()で生成した日付オブジェクトを渡すと、1970年1月1日からの経過ミリ秒数が返されます。以下に、Number()関数の動作を確認できるサンプルコードを
-
JavaScriptで数字パターンを表示する方法【初心者向けサンプルコード】
本記事では、テキスト入力欄とボタンを備えたJavaScript・HTMLプログラムの作成方法を解説します。ユーザーが入力欄に任意の数値(例:5)を入力してボタンをクリックすると、画面に以下のような数字パターンが表示される仕組みです。(n = 5 の場合の出力例)01 01 02 01 02 03 01 02 03 04 01 02 03 04 05仕組みのポイントこのパターンは二重ループ(ネストしたforループ)を使うことで実現できます。外側のループが「行」を制御し、内側のループがその行に表示する「数字の個数」を制御します。i 行目には 1 から i までの数字が順番に出力されるため、行が進む