# Обсуждение реализации календаря на JavaScript

Наш календарь представляет собой таблицу с числами от `1` до последнего дня месяца. Проблема в том, что числа в таблице в первом ряду должны идти не с первой ячейки.

Это в общем очевидно. Не очевидно с какой именно ячейки нужно начинать. Давайте обдумаем.

Пусть неделя начинается с понедельника, и он нулевой день. В этом случае номер дня недели первого числа месяца соответствует количеству пустых ячеек перед ним. Например, четверг будет иметь номер `3` и перед ним будет `3` пустых ячейки.

Аналогичная проблема нас будет ждать в конце таблицы. Там тоже нужно оставлять пустые ячейки после последнего числа месяца. В этом случае количество пустых ячеек будет равно шестерке, от которой нужно отнять номер дня недели последнего дня месяца.

Подумаем теперь, как мы будем формировать нашу таблицу. Очевидно, что удобнее всего иметь двухмерный массив, в каждом подмассиве которого будет по `7` элементов (= количеству дней в недели). При этом в первом и последнем подмассивах часть элементов должны быть пустыми.

## Алгоритм действий

Сделаем функцию, которая будет делать массив чисел от `1` до последнего дня месяца. Затем сделаем функцию, которая добавит в начало массива необходимое количество пустых элементов. Аналогичная функция должна добавлять пустые элементы в конец массива.

После этого у нас получится одномерный массив с количеством элементов, кратным `7`. Преобразуем этот массив в двухмерный по `7` элементов в подмассиве.

Затем возьмем этот двухмерный массив, переберем циклами и сформируем нашу таблицу.

Этот алгоритм действий мы поэтапно будем выполнять в следующих уроках.

←→
↑
en ru