JavaScriptで英語の序数(1st、2nd、3rd)を生成する方法
JavaScriptでは、数値を受け取って英語の序数(ordinal number)形式の文字列を返す関数が必要になることがあります。序数とは、「1st(1番目)」「2nd(2番目)」「3rd(3番目)」のように、順序を表す英語の表記のことです。
英語の序数の基本ルール
英語の序数には、以下のようなルールがあります。
- 1の位が1(ただし11を除く)→「st」(例:1st、21st、101st)
- 1の位が2(ただし12を除く)→「nd」(例:2nd、22nd)
- 1の位が3(ただし13を除く)→「rd」(例:3rd、23rd)
- 上記以外 →「th」(例:4th、11th、12th、13th、111th)
特に注意が必要なのは11、12、13です。これらの数値は1の位が1、2、3であっても、それぞれ「11th」「12th」「13th」となります。そのため、下2桁(100で割った余り)も合わせて確認する必要があります。
サンプルコード
例として、3を渡すと「3rd」が返される関数を実装してみましょう。コードは以下のとおりです。
const num = 3;
const englishCount = num => {
if (num % 10 === 1 && num % 100 !== 11) {
return num + "st";
}
if (num % 10 === 2 && num % 100 !== 12) {
return num + "nd";
}
if (num % 10 === 3 && num % 100 !== 13) {
return num + "rd";
}
return num + "th";
};
console.log(englishCount(num));
console.log(englishCount(111));
console.log(englishCount(65));
console.log(englishCount(767));
実行結果
コンソールには以下のように出力されます。
3rd 111th 65th 767th
コードの解説
この関数では、まず num % 10 で1の位を取得し、それが1、2、3のいずれかに該当するかを判定しています。同時に num % 100 !== 11 などの条件で、11、12、13という例外を排除しています。どの条件にも当てはまらなかった場合は、デフォルトとして「th」を付けて返します。
このように剰余演算子(%)を組み合わせることで、シンプルかつ堅牢に英語の序数を生成できます。日付の表示やランキング機能など、さまざまな場面で活用できるテクニックなので、ぜひ覚えておきましょう。
-
【JavaScript】数値の約数をすべて求める関数の実装方法
はじめに本記事では、正の整数を1つ引数として受け取り、その数を余りなく割り切れるすべての数(約数)を配列として返すJavaScript関数の実装方法を解説します。問題の定義作成する関数は、正の整数を唯一の引数として受け取ります。そして、入力された数値を完全に割り切れるすべての数値を要素とする配列を構築して返す必要があります。例えばー入力が次の数値だった場合:const num = 12;期待される出力は以下のとおりです。const output = [1, 2, 3, 4, 6, 12];12の場合、1・2・3・4・6・12の6つの整数が12を割り切れるため、これらが約数となります。実装コード
-
JavaScriptで配列から指定した数に最も近い値を取得する方法
はじめに本記事では、JavaScriptを使って「配列の中から指定した数値に最も近い値を見つけて返す」関数の実装方法を解説します。この関数は、第1引数として数値の配列を、第2引数として単一の数値を受け取ります。そして、配列の中から第2引数で指定された数値に最も近い要素を探し出し、その値を返します。問題の例例えば、以下のような配列と数値が与えられた場合を考えてみましょう。const arr = [34, 67, 31, 53, 89, 12, 4]; const num = 41;この場合、41に最も近い配列の要素は 34 となるため、出力結果は 34 になります。実装コード以下が実際のコード例