【JavaScript】各桁の合計で数値が「Oddish」か「Evenish」かを判定する方法
すべての桁の数字を足し合わせた合計が奇数になる数値を「Oddish(オディッシュ)」、合計が偶数になる数値を「Evenish(イーブンニッシュ)」と呼びます。
本記事では、与えられた数値が Oddish か Evenish かを判定する関数を JavaScript で実装します。判定結果として、Oddish の場合は true を、Evenish の場合は false を返します。
実装の考え方
判定の手順は以下のとおりです。
- 数値を 10 で割った余り(
num % 10)で一の位の数字を取り出す - 数値を 10 で割って小数点以下を切り捨て(
Math.floor(num / 10))、次の桁へ進む - これを再帰的に繰り返し、全桁の合計を求める
- 最後に合計を 2 で割った余りが 1 なら奇数(Oddish)なので
trueを返す
サンプルコード
以下が実際のコードです。
const num = 434667;
const isOddish = (num, sum = 0) => {
if(num){
return isOddish(Math.floor(num / 10), sum + (num % 10));
};
return sum % 2 === 1;
};
console.log(isOddish(num));コードの解説
この関数は再帰処理を使っています。引数 sum のデフォルト値を 0 にしておくことで、最初の呼び出し時には数値だけ渡せばよいシンプルな設計になっています。
例えば 434667 の場合、各桁の合計は 4 + 3 + 4 + 6 + 6 + 7 = 30 となります。30 は偶数なので、この数値は Evenish であり、関数は false を返します。
実行結果
コンソールへの出力は以下のとおりです。
false
このように、再帰を使えばループ処理を書かずに簡潔に各桁の合計を計算できます。桁数が多い数値でも同様に動作するため、汎用的な判定関数として利用できます。
-
JavaScriptで桁の和が回文数かどうかを判定する関数を作る方法
問題概要今回は、数値 num を第1引数(唯一の引数)として受け取る JavaScript 関数を作成します。この関数は、num の各桁の数字を合計した値が回文数(palindrome number)である場合に true を返し、そうでない場合は false を返す必要があります。例えば、関数への入力が次のようだったとします。const num = 781296;このとき、期待される出力は以下の通りです。const output = true;出力の解説781296 の各桁の和を計算すると、7 + 8 + 1 + 2 + 9 + 6 = 33 となります。33 は左右から読んでも同じ値になる
-
JavaScriptで数値に序数接尾辞(st・nd・rd・th)を追加する方法
問題JavaScriptで関数を作成する必要があります。この関数は、数値 num を最初の(唯一の)引数として受け取ります。関数の役割は、英語の序数表記のルールに従って、数値に「st」「nd」「rd」「th」という接尾辞を追加することです。具体的なルールは以下の通りです。一の位が1で終わる数値には「st」を使用します(例:1st、発音はfirst)一の位が2で終わる数値には「nd」を使用します(例:92nd、発音はninety-second)一の位が3で終わる数値には「rd」を使用します(例:33rd、発音はthirty-third)上記ルールの例外として、下二桁が11・12・13となる数値に