学習ログとタスク情報をもとに、学習状況を一画面で把握できるダッシュボード機能を実装した。
// studyLogsの全てのminutesを合計する
const overallMinutes = studyLogs.reduce((sum, log) => {
// sum: これまでの合計値
// log: 現在の学習ログ1件
return sum + log.minutes;
// 今の合計 + 今回のログの時間
}, 0);
// 初期値は0(まだ何も足していない状態)
① 配列を1つずつ取り出す
② minutesを足していく
③ 最終的に合計になる
👉 reduce = 「合計を作る機械」
// 今日の日付を取得(YYYY-MM-DD形式)
const today = new Date().toISOString().split("T")[0];
// 今日のログだけを抽出して合計
const todayMinutes = studyLogs
// 今日の日付と一致するログだけ取得
.filter((log) => log.date.startsWith(today))
// 抽出したログのminutesを合計
.reduce((sum, log) => {
return sum + log.minutes;
}, 0);