Diskussion af implementering af kalender i JavaScript
Vores kalender er en tabel
med tal fra 1 til den sidste dag i måneden.
Problemet er, at tallene i tabellen i den første
række ikke skal starte fra den første celle.
Dette er generelt indlysende. Hvad der ikke er indlysende, er fra hvilken celle den skal starte. Lad os tænke over det.
Lad ugen starte på mandag, og
lad den være dag nul. I dette tilfælde svarer ugedagsnummeret
for den første dag i måneden til
antallet af tomme celler foran den. For eksempel,
torsdag vil have nummeret 3 og foran
den vil der være 3 tomme celler.
Et lignende problem venter os i slutningen af tabellen. Der skal også efterlades tomme celler efter det sidste tal i måneden. I dette tilfælde vil antallet af tomme celler være lig med seks, hvorfra man skal trække ugedagsnummeret for den sidste dag i måneden fra.
Lad os nu tænke på, hvordan vi vil danne
vores tabel. Det mest praktiske er selvfølgelig
at have et todimensionelt array, hvor hvert underarray
indeholder 7 elementer (= antallet af
dage i ugen). Samtidig skal en del af elementerne i de første og sidste
underarrays være tomme.
Handlingsalgoritme
Lad os lave en funktion, der laver et array
med tal fra 1 til den sidste dag i måneden.
Derefter laver vi en funktion, der tilføjer det
nødvendige antal tomme elementer til
starten af arrayet. En tilsvarende funktion skal tilføje
tomme elementer til slutningen af arrayet.
Efter dette vil vi have et endimensionelt array
med et antal elementer, der er et multiplum af 7.
Vi omdanner dette array til et todimensionelt array med 7
elementer i hvert underarray.
Derefter tager vi dette todimensionelle array, gennemgår det med loops og danner vores tabel.
Denne handlingsalgoritme vil vi trin for trin gennemføre i de følgende lektioner.