#javascript #dayjs
#язык JavaScript #dayjs
Вопрос:
Я хочу получить массив индекса оставшихся месяцев (0-индекс), не включая текущий месяц, в обратном отсчете, в этом году (или в любую дату ради этого). Я использую lodash
и dayjs
, но я чувствую, что мой код немного труден для понимания.
Есть ли более «дейский» способ получить то, что я хочу? Я не нашел дополнительной помощи в библиотеке документа или в других потоках с аналогичной проблемой здесь.
// All months - Current year's remaining months (0-index), we map in reverse until reaching 0 const yearRemainingMonths = map(range(11 - dayjs().month()), n =gt; 11 - n) // [] // Let's pretend we are in June, so we'd get // [11, 10, 9, 8, 7]
Ответ №1:
Нет более чистого способа. В конце концов, вам придется один раз выполнить цикл или сохранить предварительно определенный массив.
Пример 1 — с кэшированными данными
import dayjs from 'dayjs' const months = [0,1,2,3,4,5,6,7,8,9,10,11] function remainingMonths(month) { return [...months].splice(month 1).reverse() } console.log(remainingMonths(dayjs().month())) // [] console.log(remainingMonths(5)) // june =gt; [ 11,10,9,8,7,6] console.log(remainingMonths(0)) // [11,10,9,8,7,6,5,4,3,2,1]
Пример 2 — с for loop
function remainingMonths(month) { const remaining = [] for(let i = 11; i gt; month; i--) { remaining.push(i) } return remaining } console.log(remainingMonths(11)) // [] console.log(remainingMonths(5)) // june =gt; [ 11,10,9,8,7,6] console.log(remainingMonths(0)) // [11,10,9,8,7,6,5,4,3,2,1]
Вероятно for
, петля немного чище.