A l oop не требуется, вы можете просто склеить массив с текущего месяца + 1 до конца месяца и добавить месяцы с начала до текущего месяца - 1, например,
/*
** @param {number} monthNumber - calendar month number in range 1 to 12
** @returns {Array} array of months from monthNumber + 1
** to monthNumber - 1
*/
function getMonthArray(monthNumber) {
let month = [,"January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"];
return month.splice(monthNumber + 1).concat(month.splice(1, monthNumber - 1));
}
console.log(getMonthArray(1)); // for January
console.log(getMonthArray(2)); // for February
console.log(getMonthArray(6)); // for June
console.log(getMonthArray(12)); // for December
Требуется допуск в начале массива месяца, чтобы предотвратить попытки доступа к отрицательным индексам при соединении с monthNumber - 1
.
Номер ввода месяца может быть изменено на нулевое индексирование, но я думаю, что календарное индексирование более подходит.
Если вы хотите передать ему объект Date (и использовать нулевые индексированные месяцы), тогда:
/*
** @param {Date} date - date to use for month number
** @returns {Array} array of months from month + 1 to month - 1
*/
function getMonthArray(date) {
let m = date.getMonth();
let month = [,"January", "February", "March", "April",
"May", "June", "July", "August", "September",
"October", "November", "December"];
return month.splice(m+2).concat(month.splice(1, m));
}
console.log(getMonthArray(new Date(2020, 0))); // for January
console.log(getMonthArray(new Date(2020, 1))); // for February
console.log(getMonthArray(new Date(2020, 5))); // for June
console.log(getMonthArray(new Date(2020, 11))); // for December
console.log(getMonthArray(new Date())); // current month