Kalendoriaus implementavimo JavaScript diskusija
Mūsų kalendorius yra lentelė
su skaičiais nuo 1 iki paskutinės mėnesio dienos.
Problema ta, kad skaičiai lentelėje pirmoje
eilutėje turi prasidėti ne nuo pirmos ląstelės.
Tai apskritai akivaizdu. Neakivaizdu nuo kurios būtent ląstelės reikia pradėti. Pagalvokime.
Tarkime, savaitė prasideda nuo pirmadienio, ir
jis yra nulinė diena. Šiuo atveju savaitės dienos
numeris pirmąją mėnesio dieną atitinka
tuščią ląstelių skaičių prieš ją. Pavyzdžiui,
ketvirtadienis turės numerį 3 ir prieš
jį bus 3 tuščios ląstelės.
Panaši problema mūsų lauks lentelės pabaigoje. Ten taip pat reikia palikti tuščias ląsteles po paskutinės mėnesio dienos. Šiuo atveju tuščią ląstelių skaičius bus lygus šešiems, iš kurių reikia atimti savaitės dienos numerį paskutinę mėnesio dieną.
Dabar pagalvokime, kaip formuosime
savo lentelę. Akivaizdu, kad patogiausia
turėti dvimatį masyvą, kuriame kiekviename submasyve
bus po 7 elementus (= savaitės dienų skaičiui).
Be to, pirmame ir paskutiniame submasyvuose dalis elementų turi būti tušti.
Veiksmų algoritmas
Sukurkime funkciją, kuri sudarys masyvą
skaičių nuo 1 iki paskutinės mėnesio dienos.
Tada padarykime funkciją, kuri pridės
į masyvo pradžią reikiamą kiekį tuščią elementų.
Panaši funkcija turi pridėti
tuščius elementus į masyvo pabaigą.
Po to mes gausime vienmatį masyvą
su elementų skaičiumi, dalumu iš 7.
Paverskime šį masyvą į dvimatį po 7
elementų submasyve.
Tada paimkime šį dvimatį masyvą, perrinkime ciklais ir suformuokime savo lentelę.
Šį veiksmų algoritmą mes etapais atliksime kitose pamokose.