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世紀)も正しく判定できます。パフォーマンス面でもループより大幅に効率的なため、特別な理由がない限りこちらの方法がおすすめです。
-
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つの情報が必要です。 開始位置:どこから削除を始めるかを指定する数値 削除数:その位置から何個の要素を削除するかを指
-
【Chrome DevTools】発生したJavaScriptイベントを確認する方法
JavaScriptイベントの発火を確認する手順 Web開発をしていると、「この要素で実際にどのJavaScriptイベントが発火しているのか知りたい」という場面に出くわすことがあります。本記事では、Google Chromeのデベロッパーツール(DevTools)を使って、発生したJavaScriptイベントを簡単に特定する方法を解説します。 手順1:DevToolsを開く まず、Google Chromeを開き、F12キーを押してDevTools(デベロッパーツール)を起動します。Windowsでは「Ctrl + Shift + I」、Macでは「Cmd + Option + I」でも開く