JavaScriptのmap関数で現在時刻が特定の時間帯に含まれるか判定する方法
例えば、学習予定の時刻を含む科目データが次のようにあるとします。
const scheduleDetails = [
{ subjectName: 'JavaScript', studyTime: '5 PM - 11 PM' },
{ subjectName: 'MySQL', studyTime: '12 AM - 4PM' }
]
ここでmap()メソッドを活用すれば、現在時刻がどの科目の学習時間帯に該当するのかを判定できます。以下にその実装例を示します。
サンプルコード
const scheduleDetails = [
{ subjectName: 'JavaScript', studyTime: '5 PM - 11 PM' },
{ subjectName: 'MySQL', studyTime: '12 AM - 4PM' }
]
function timeToReadSubjectName(scheduleDetails) {
var currentTime = new Date().getHours();
let result = '';
scheduleDetails.map(obj => {
const hourDetails = obj.studyTime.split(' ');
const firstCurrentTime = hourDetails[1] === 'PM' ? 12 : 0;
const secondCurrentTime = hourDetails[4] === 'PM' ? 12 : 0;
if (currentTime > (+hourDetails[0] + firstCurrentTime) &&
currentTime < (+hourDetails[3] + secondCurrentTime)) {
result = obj.subjectName;
};
})
return result;
}
console.log('この時間に読むべき科目は=' + timeToReadSubjectName(scheduleDetails));
上記のプログラムを実行するには、ターミナルで次のコマンドを使用します。
node fileName.js
ここでは、ファイル名は「demo128.js」としています。
コードの解説
new Date().getHours():現在の時刻を24時間表記の数値(0〜23)で取得します。obj.studyTime.split(' '):「5 PM - 11 PM」のような文字列を空白で分割し、配列に変換します(例:['5', 'PM', '-', '11', 'PM'])。'PM' ? 12 : 0:時間帯が午後(PM)の場合は12時間を加算し、24時間表記へ変換しています。- 現在時刻が開始時刻より大きく、終了時刻より小さい場合に、その科目名を結果として返します。
実行結果
上記のプログラムを実行すると、以下のような出力が得られます。
PS C:\Users\Amit\JavaScript-code> node demo128.js The Subject which you need to read in this time=JavaScript
なお、条件に一致する最初の要素だけが必要な場合は、本来配列の各要素を変換して新しい配列を作るためのメソッドであるmap()よりも、find()やforEach()の方が適していることもあります。ただし、本記事ではmap()を使った時間帯判定の実装例としてご紹介しました。
-
JavaScript関数の使い方を徹底解説!初心者向けステップバイステップガイド
JavaScriptの関数とは、再利用できるカスタムコードブロックのことです。関数を活用することでコードのモジュール化が促進され、オブジェクト指向プログラミングにおいても欠かせない存在となります。関数は「宣言」または「式」のいずれかの方法で定義できます。 これからJavaScriptを学ぼうとしている方にとって、JS関数の基礎は必ず押さえておきたい重要ポイントです。プログラミング言語に触れた経験がある方なら、関数が複雑なプログラムを組み立てるための基本的な部品であることはご存じでしょう。しかし、その仕組みまで理解している方は少ないかもしれません。関数を使えば、共通の処理を一度書くだけで済
-
JavaScriptで指定した時刻になったら関数を自動実行する方法
JavaScriptで「特定の日時に達したら関数を実行したい」というケースでは、目標時刻までの時間差(ミリ秒)を計算し、それを setTimeout() に渡すのが基本のアプローチです。ここでは、その実装手順をサンプルコードとともにわかりやすく解説します。 実装の流れ トリガーしたい日時を Date オブジェクトで作成し、getTime() でミリ秒値に変換します。 現在時刻も同様に getTime() でミリ秒として取得します。 「目標時刻 − 現在時刻」の差分を計算します。これが「あと何ミリ秒で目標時刻になるか」を表します。 差分を setTimeout() の第2引数に渡し、第1引数に