Day.js — Получите массив оставшихся месяцев в году

#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 , петля немного чище.