Discuția despre implementarea unui calendar în JavaScript
Calendarul nostru este un tabel
cu numere de la 1 până la ultima zi a lunii.
Problema este că numerele din tabel, în primul rând,
nu trebuie să înceapă de la prima celulă.
În general, acest lucru este evident. Nu este evident din ce celulă exact trebuie să înceapă. Să ne gândim.
Să presupunem că săptămâna începe cu luni, și
acesta este ziua zero. În acest caz, numărul zilei
de săptămână a primei zile a lunii corespunde
cantității de celule goale înaintea ei. De exemplu,
joi va avea numărul 3 și înainte
ei vor fi 3 celule goale.
O problemă similară ne va aștepta la sfârșitul tabelului. Acolo, de asemenea, trebuie să lăsăm celule goale după ultima zi a lunii. În acest caz, cantitatea de celule goale va fi egală cu șase, din care trebuie să scădem numărul zilei de săptămână a ultimei zile a lunii.
Să ne gândim acum, cum vom forma
tabelul nostru. Evident, cel mai convenabil este
să avem un array bidimensional, în care fiecare sub-array
va avea câte 7 elemente (= numărul de
zile din săptămână). În același timp, în primul și în ultimul
sub-array, o parte din elemente trebuie să fie goale.
Algoritmul acțiunilor
Vom face o funcție care va crea un array
cu numere de la 1 până la ultima zi a lunii.
Apoi, vom face o funcție care va adăuga la
începutul array-ului numărul necesar de elemente
goale. O funcție similară trebuie să adauge
elemente goale la sfârșitul array-ului.
După aceasta, vom obține un array unidimensional
cu un număr de elemente, multiplu de 7.
Vom transforma acest array într-unul bidimensional cu câte 7
elemente în fiecare sub-array.
Apoi, vom lua acest array bidimensional, îl vom parcurge cu bucle și vom forma tabelul nostru.
Vom executa acest algoritm de acțiuni etapă cu etapă în lecțiile următoare.