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となる数値にはすべて「th」を使用します(例:11th、発音はeleventh、112th、発音はone hundred [and] twelfth)
- その他のすべての数値には「th」を使用します(例:9th、発音はninth)
例えば、関数への入力が以下の場合:
入力
const num = 4513;
出力
const output = '4513th';
出力の解説
4513の一の位は3なので一見「rd」が付きそうですが、下二桁が13であるため例外ケースとなり、「th」を付ける必要があります。
コード例
以下がその実装コードです。
const num = 4513;
const appendText = (num = 1) => {
let suffix = "th";
if (num == 0) suffix = "";
if (num % 10 == 1 && num % 100 != 11) suffix = "st";
if (num % 10 == 2 && num % 100 != 12) suffix = "nd";
if (num % 10 == 3 && num % 100 != 13) suffix = "rd";
return num + suffix;
};
console.log(appendText(num));出力
4513th
コードの解説
このコードでは、まずデフォルトの接尾辞として「th」を設定し、数値が0の場合は接尾辞なしの空文字列を返します。
ポイントは、剰余演算子 % を使って条件判定を行っている点です。num % 10 で一の位を取得し、さらに num % 100 != 11 のように下二桁も同時にチェックすることで、11・12・13という例外ケースを正しく除外しています。
例えば、111は一の位が1ですが、下二桁が11であるため「st」ではなく「th」が適用され、正しく「111th」となります。このように、一の位と下二桁の両方を組み合わせて判定することで、あらゆる整数に対して正確な英語の序数表記を生成できるのです。
-
JavaScriptの数値(Number)の基本と実践サンプルコード
JavaScriptでは、整数も小数もすべて「Number」型として扱われます。この記事では、数値変数の定義方法と、それらを使った簡単な演算の例を、動作するHTMLサンプルコードとともに紹介します。サンプルコード以下は、JavaScriptで数値を扱う基本的な例です。整数(22、99)と小数(1.523)を変数に格納し、ボタンをクリックすると画面に表示する仕組みになっています。<!DOCTYPE html> <html lang=ja> <head> <meta charset=UTF-8 /> <meta name=viewport co
-
JavaScriptで桁の和が回文数かどうかを判定する関数を作る方法
問題概要今回は、数値 num を第1引数(唯一の引数)として受け取る JavaScript 関数を作成します。この関数は、num の各桁の数字を合計した値が回文数(palindrome number)である場合に true を返し、そうでない場合は false を返す必要があります。例えば、関数への入力が次のようだったとします。const num = 781296;このとき、期待される出力は以下の通りです。const output = true;出力の解説781296 の各桁の和を計算すると、7 + 8 + 1 + 2 + 9 + 6 = 33 となります。33 は左右から読んでも同じ値になる