Bespreking van de implementatie van een kalender in JavaScript
Onze kalender is een tabel
met nummers van 1 tot de laatste dag van de maand.
Het probleem is dat de nummers in de tabel in de eerste
rij niet vanaf de eerste cel moeten beginnen.
Dit is over het algemeen duidelijk. Wat niet duidelijk is, is vanaf welke cel precies moet worden begonnen. Laten we erover nadenken.
Stel dat de week begint op maandag, en
het is dag nul. In dit geval komt het weekdagnummer
van de eerste dag van de maand overeen met
het aantal lege cellen ervoor. Bijvoorbeeld,
donderdag heeft nummer 3 en ervoor
zullen 3 lege cellen zijn.
Een vergelijkbaar probleem wacht ons aan het einde van de tabel. Ook daar moeten lege cellen worden overgelaten na het laatste nummer van de maand. In dit geval zal het aantal lege cellen gelijk zijn aan zes, minus het weekdagnummer van de laatste dag van de maand.
Laten we nu bedenken hoe we onze
tabel gaan vormen. Het is duidelijk dat het het handigst is
om een tweedimensionale array te hebben, waarin elke subarray
7 elementen bevat (= aantal
dagen in de week). Tegelijkertijd moeten in de eerste en laatste
subarray een deel van de elementen leeg zijn.
Actie-algoritme
We maken een functie die een array maakt
van nummers van 1 tot de laatste dag van de maand.
Vervolgens maken we een functie die aan het
begin van de array het benodigde aantal lege
elementen toevoegt. Een vergelijkbare functie moet lege
elementen aan het einde van de array toevoegen.
Hierna krijgen we een eendimensionale array
met een aantal elementen, deelbaar door 7.
We transformeren deze array in een tweedimensionale array met 7
elementen per subarray.
Vervolgens nemen we deze tweedimensionale array, doorlopen deze met lussen en vormen onze tabel.
We zullen dit actie-algoritme stapsgewijs uitvoeren in de volgende lessen.