Diskusjon av implementering av kalender i JavaScript
Vår kalender er en tabell
med tall fra 1 til den siste dagen i måneden.
Problemet er at tallene i tabellen i den første
rekken ikke skal starte fra den første cellen.
Dette er generelt opplagt. Det som ikke er opplagt er hvilken celle det skal startes fra. La oss tenke gjennom dette.
Anta at uken starter med mandag, og
det er dag null. I dette tilfellet tilsvarer ukedagsnummeret
for den første dagen i måneden
antall tomme celler foran den. For eksempel
vil torsdag ha nummer 3 og foran
den vil det være 3 tomme celler.
Et tilsvarende problem venter oss på slutten av tabellen. Der må det også være tomme celler etter det siste tallet i måneden. I dette tilfellet vil antall tomme celler være lik seks, minus ukedagsnummeret for den siste dagen i måneden.
La oss nå tenke på hvordan vi skal danne
tabellen vår. Det mest praktiske er å
ha en todimensjonal matrise, hvor hver delmatrise
inneholder 7 elementer (= antall
dager i uken). Samtidig må en del av elementene i den første og siste
delmatrisen være tomme.
Handlingsalgoritme
La oss lage en funksjon som lager en matrise
med tall fra 1 til den siste dagen i måneden.
Deretter lager vi en funksjon som legger til
det nødvendige antallet tomme elementer i
begynnelsen av matrisen. En tilsvarende funksjon skal legge til
tomme elementer på slutten av matrisen.
Etter dette vil vi ha en endimensjonal matrise
med et antall elementer som er delelig på 7.
Vi konverterer denne matrisen til en todimensjonal med 7
elementer i hver delmatrise.
Deretter tar vi denne todimensjonale matrisen, itererer gjennom den med løkker og danner tabellen vår.
Vi vil utføre denne handlingsalgoritmen trinnvis i de følgende leksjonene.