sunrise-sunset: refactor streak code

This commit is contained in:
Thomas 2023-01-29 23:26:29 +00:00
parent 29e4cb0b6d
commit 6d6557d3cb

View file

@ -29,24 +29,23 @@ export class SunriseSunsetStreakCalculator {
return 1; return 1;
} }
let streakLength = 1; // A (reverse-order) list of streaks in the lis tof correct days.
for (const [index, day] of sortedDays.entries()) { const allStreaks: number[] = sortedDays.reduce((streaks: number[], day, index, days) => {
const nextDay = sortedDays[index + 1]; const currentStreakLength = streaks[0] ?? 1;
const daysBetween = differenceInCalendarDays(day, days[index + 1]);
if (nextDay === undefined) {
console.log(`No next day, returning streak length of ${streakLength}`);
return streakLength;
}
const daysBetween = differenceInCalendarDays(day, nextDay);
console.log(`Days Between ${day} - ${nextDay}`, daysBetween);
if (daysBetween === 1) { if (daysBetween === 1) {
streakLength++; // The streak continues ! Add a day.
streaks[0] = currentStreakLength + 1;
} else { } else {
console.log(`Days between is not 1, returning streak length of ${streakLength}`); // We've hit a gap, so start a new streak
return streakLength; streaks.unshift(1);
}
} }
return streaks;
}, []);
// The streaks are in reverse order, so the most recent streak is the last one.
return allStreaks[allStreaks.length - 1];
} }
} }