首页 > 解决方案 > Array.fill() 保留先前选择的月份日期

问题描述

我一直在 SO 和 github 中寻找解释,但找不到。有很多线程漂浮,Array.fill()但似乎没有任何答案可以回答我的问题。就这样,

const dates = Array(this.props.totalDays).fill().map((e, i) => moment(this.props.selectedDate).day(i+1).format('DD-MM')).

在上面的语句this.props.totalDays中是一个数字,它是所选月份的天数。例如,从 1 月开始将是 31,当我们分别选择 2 月、3 月和 4 月时,它将是 28、31,30。并且this.props.selectedDate是字符串格式的日期(例如:2018-01-01 表示一月,2018-03-01 表示三月等)

dates当我选择一月为 01-01、01-02、......一直到 01-31 时,我的数组以所需格式显示日期。

现在,当我选择二月时它搞砸了,我不明白为什么?当我选择二月时,我dates的数组将从 01-29、01-30、01-31、01-02....一直到 25-02

现在当我选择数组时Marchdates数组是 26-02, 27-02, 28-02, 01-03,02-03......一直到 28-03

我一直在努力理解发生了什么并且失败了。

任何帮助将非常感激。

谢谢,

维克拉姆

标签: javascriptarraysreactjs

解决方案


moment.day()表示星期几,从 0 开始表示星期日。我想你想设置一个月中的哪一天,你可以用date().

let totalDays = 28
let selectedDate = '2018-02-01'
const dates = Array(totalDays)
      .fill()
      .map((e, i) => 
         moment(selectedDate).date(i+1).format('MM-DD'))

console.log(dates)
<script src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.22.2/moment.min.js"></script>


推荐阅读