From 833cdfaecff403869b5a7e4bf167eafe8e727dc9 Mon Sep 17 00:00:00 2001 From: fturmel <4009209+fturmel@users.noreply.github.com> Date: Fri, 23 Jul 2021 01:49:53 -0400 Subject: [PATCH] Improve nextDay implementation (#2524) Changed: Improved `nextDay` performance by roughly 50%. --- src/nextDay/index.ts | 22 ++++++---------------- 1 file changed, 6 insertions(+), 16 deletions(-) diff --git a/src/nextDay/index.ts b/src/nextDay/index.ts index 25c879a1dd..215e3e6467 100644 --- a/src/nextDay/index.ts +++ b/src/nextDay/index.ts @@ -1,10 +1,7 @@ -import requiredArgs from '../_lib/requiredArgs/index' -import getDay from '../getDay' import addDays from '../addDays' -import toDate from '../toDate' +import getDay from '../getDay' import { Day } from '../types' - -const baseMap = [7, 6, 5, 4, 3, 2, 1] +import requiredArgs from '../_lib/requiredArgs/index' /** * @name nextDay @@ -31,16 +28,9 @@ const baseMap = [7, 6, 5, 4, 3, 2, 1] */ export default function nextDay(date: Date | number, day: Day): Date { requiredArgs(2, arguments) - const map = genMap(day) - return addDays(toDate(date), map[getDay(toDate(date))]) -} -function genMap(daysToMove: number): number[] { - if (daysToMove === 0) { - return baseMap - } else { - const mapStart = baseMap.slice(-daysToMove) - const mapEnd = baseMap.slice(0, baseMap.length - daysToMove) - return mapStart.concat(mapEnd) - } + let delta = day - getDay(date) + if (delta <= 0) delta += 7 + + return addDays(date, delta) }