Diskussion om implementering av kalender i JavaScript
Vår kalender är en tabell
med nummer från 1 till sista dagen i månaden.
Problemet är att numren i tabellens första
rad inte ska börja från den första cellen.
Det är i allmänhet uppenbart. Det som inte är uppenbart är från vilken cell exakt man behöver börja. Låt oss fundera.
Antag att veckan börjar på måndag, och
det är nolldagen. I detta fall motsvarar veckodagsnumret
för den första dagen i månaden
antalet tomma celler före den. Till exempel,
torsdag kommer att ha nummer 3 och före
den kommer det att vara 3 tomma celler.
Ett liknande problem väntar oss i slutet av tabellen. Där behöver man också lämna tomma celler efter sista numret i månaden. I detta fall kommer antalet tomma celler att vara lika med sex, från vilket man måste subtrahera veckodagsnumret för sista dagen i månaden.
Låt oss nu fundera på hur vi ska skapa
vår tabell. Det mest bekväma är uppenbarligen
att ha en tvådimensionell array, där varje subarray
innehåller 7 element (= antalet
dagar i veckan). Samtidigt ska en del element i den första och sista
subarrayen vara tomma.
Handlingsalgoritm
Vi skapar en funktion som gör en array
med nummer från 1 till sista dagen i månaden.
Sedan skapar vi en funktion som lägger till
ett nödvändigt antal tomma element i
början av arrayen. En liknande funktion ska lägga till
tomma element i slutet av arrayen.
Efter detta kommer vi att ha en endimensionell array
med ett antal element som är en multipel av 7.
Vi omvandlar denna array till en tvådimensionell med 7
element per subarray.
Sedan tar vi denna tvådimensionella array, itererar genom den med loopar och skapar vår tabell.
Vi kommer att utföra denna handlingsalgoritm steg för steg i de följande lektionerna.