【JavaScript入門】Dateオブジェクトで今日からn日後の曜日を求める方法
課題の概要
JavaScriptで、数値 n を唯一の引数として受け取る関数を作成することを考えます。
この関数は、まず Date オブジェクトを使って今日の曜日を取得し、n日後が何曜日になるかを返します。
具体例
今日が月曜日で n = 2 の場合、出力は次のようになります。
Wednesday
サンプルコード
const num = 15;
const findNthDay = num => {
// getDay() の戻り値(0:日曜 〜 6:土曜)に対応する配列
const weekday = [
'Sunday',
'Monday',
'Tuesday',
'Wednesday',
'Thursday',
'Friday',
'Saturday'
];
const today = new Date().getDay();
const daysFromNow = ((num % 7) + 7) % 7; // 負の数にも対応
return weekday[(today + daysFromNow) % 7];
};
console.log(findNthDay(num));
実行結果
コンソールには以下のように出力されます。
Friday
コードのポイント
new Date().getDay()は、今日の曜日を 0(日曜)〜 6(土曜) の整数で返します。配列の先頭を'Sunday'にしておくことで、getDay()の戻り値とインデックスをそのまま対応させられます。num % 7により、n日後を「1週間以内の移動量」に置き換えています。曜日は7日周期で繰り返すため、たとえば 15 日後は 2 日後と同じ曜日になります。((num % 7) + 7) % 7としているのは、nに負の値が渡された場合(n日前を求めたいケース)でも正しく計算できるようにするためです。- 最後に、今日の曜日のインデックスへ移動量を加算し、7 で割った余りを配列の添字として使うことで、週をまたぐ場合も正しい曜日を取得できます。
応用:日本語の曜日名で表示したい場合
配列の要素を書き換えるだけで、日本語の曜日名を返すことも可能です。
const weekdayJp = ['日', '月', '火', '水', '木', '金', '土']; // weekday を weekdayJp に置き換えるだけでOK
-
JavaScriptで日付の「日」を設定する方法|setDate()の使い方を解説
JavaScriptでは、DateオブジェクトのsetDate()メソッドを使うことで、日付の「日」(1〜31)を設定・変更できます。この記事では、実際のコード例と実行結果をもとに、setDate()の基本的な使い方をわかりやすく解説します。 setDate()メソッドとは setDate()は、Dateオブジェクトの「日」の値だけを変更するためのメソッドです。年や月はそのままに、日にちだけを差し替えたい場合に便利です。引数には1〜31の整数を指定しますが、範囲外の値を渡してもエラーにはならず、自動的に月をまたいだ日付へと調整されます。また、このメソッドは元のDateオブジェクト自体を書き換え
-
JavaScriptで配列要素をそのインデックスでべき乗した値に変換する方法
問題 数値の配列を受け取るJavaScript関数を作成する必要があります。この関数は、入力配列の各要素を、その要素の位置を示す0始まりのインデックスでべき乗し、新しい配列へと変換します。そして最終的に、この新しい配列を返します。 例えば、インデックス0にある要素は0乗(常に1)、インデックス3にある要素は3乗、というように各要素が処理されます。 実装のポイント ループで配列を走査しながら、各要素とそのインデックスを同時に取得する Math.pow() を使って「要素 ^ インデックス」を計算する 計算結果を結果配列の同じ位置に格納する なお、モダンなJavaScriptでは Math