Почему не работает с одинаковыми месяцами?

/**
 * Вовзращает массив массивов с месяцем и годом
 *
 * @return [1,2020], [2,2020] ...
 */
function dateRange(startDate, endDate) {
        const fromYear = startDate.getFullYear();
        // console.log(fromYear,['qq']); //2020
        const fromMonth = startDate.getMonth();//01(feb)
        const toYear = endDate.getFullYear();//2020
        const toMonth = endDate.getMonth();//01 (feb)
        const months = [];
        for(let year = fromYear; year <= toYear; year++) { // 2020 <= 2020 ; year++
            let month = year === fromYear ? fromMonth : 0; // if 2020 === 2020 то month = 01(feb) else month = 0(jan)
                                                            // we get month = 01(feb)
            const monthLimit = year === toYear ? toMonth : 11; // if 2020 === 2020 то monthLimit = 01(feb) else = 11 (december)
                                                            // we get month = 01(feb)
            for(; month <= monthLimit; month++) { // if 01 (feb) <= 01(feb) ; month ++
                months.push([month ,year])
            }
        }
        return months;
}

при разных месяцах например 2.02.2019 - 14.04.2019 скрипт срабатывает но при одинаковых месяцах и разных годах [20.02.2019 - 14.02.2020] или одинаковый месяц и один год нет[20.02.2019 - 26.02.2019].


Ответы (1 шт):

Автор решения: Denis640Kb

Как-то странно у Вас было.
Вместо 12 месяца - нулевой месяц. и так далее.
Если Вы указываете одинаковый месяц и год на входе - то логично, что результат будет нулевой, так как у Вас выводится месяц и год.
А в остальном вот с правками:

    function dateRange(startDate, endDate) {
        const fromYear = startDate.getFullYear();
        const fromMonth = startDate.getMonth();
        const toYear = endDate.getFullYear();
        const toMonth = endDate.getMonth();
        const months = [];
        for(let year = fromYear; year <= toYear; year++) {
            let month = year === fromYear ? fromMonth : 1;
            const monthLimit = year === toYear ? toMonth : 12;
            for(; month <= monthLimit; month++) {
                months.push([month ,year])
            }
        }
        return months;
    }

    var now = new Date();
    var then = new Date(2019, 2, 1);
    console.log(dateRange(then, now));

→ Ссылка