JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

JavaScriptで年から世紀を求める方法|slice()を使わない実装例と解説

問題

年を表す数値を受け取り、その年が何世その年が何世紀に該当するのかを判定するJavaScript関数を作成することを考えます。

例えば、以下のような対応関係になります。

  • 1864年 → 19世紀
  • 2021年 → 21世紀

実装例:ループ処理で世紀をカウントする

以下のコードでは、「100年ごとに世紀が切り替わる」という性質を利用し、forループの中で100で割り切れる回数を数えることで世紀を求めています。

const year = 1956;
const findCentury = (year) => {
    let century = 0;
    for(let i = 0; i < year; i++){
        if(i % 100 === 0){
            century++;
        };
    };
    return century;
};
console.log(findCentury(year));

出力結果

上記コードを実行すると、コンソールには次のように表示されます。

20

仕組みの解説

この関数は、0から引数のyear未満までの整数を順番にチェックし、100で割り切れるタイミング(i % 100 === 0)ごとにカウンター変数centuryを1ずつ増加させています。

1956年の場合、100で割り切れる数は0、100、200…1900の合計20個あるため、戻り値として「20」、つまり20世紀が返されます。これは1956年が20世紀に属していることを正しく示しています。

より簡潔な代替案:Math.ceil()を使う方法

ループを使う方法はロジックの理解には役立ちますが、実務ではMath.ceil()を使えば1行で同じ結果が得られます。

const year = 1956;
const century = Math.ceil(year / 100);
console.log(century); // 20

年を100で割って小数点以下を切り上げることで、境界となる年(例えば2000年は20世紀、2001年は21世紀)も正しく判定できます。パフォーマンス面でもループより大幅に効率的なため、特別な理由がない限りこちらの方法がおすすめです。

  1. JavaScriptのsplice()メソッドで配列から特定の要素を削除する方法

    JavaScriptのsplice()メソッドで配列から特定の要素を削除する方法 コンピュータは「0」から数え始めます。つまり、インデックス0は1番目、1は2番目、2は3番目を表します。このため、list[2]と書くと、配列の3番目の要素が選択されるのです。 例として使用する配列のコードは次のとおりです。 var list = [item 1, item 2, item 3, item 4] splice()メソッドに必要な2つの引数 splice()メソッドを使うには、次の2つの情報が必要です。 開始位置:どこから削除を始めるかを指定する数値 削除数:その位置から何個の要素を削除するかを指

  2. 【Chrome DevTools】発生したJavaScriptイベントを確認する方法

    JavaScriptイベントの発火を確認する手順 Web開発をしていると、「この要素で実際にどのJavaScriptイベントが発火しているのか知りたい」という場面に出くわすことがあります。本記事では、Google Chromeのデベロッパーツール(DevTools)を使って、発生したJavaScriptイベントを簡単に特定する方法を解説します。 手順1:DevToolsを開く まず、Google Chromeを開き、F12キーを押してDevTools(デベロッパーツール)を起動します。Windowsでは「Ctrl + Shift + I」、Macでは「Cmd + Option + I」でも開く