javascript - 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
现在当我选择数组时March
,dates
数组是 26-02, 27-02, 28-02, 01-03,02-03......一直到 28-03
我一直在努力理解发生了什么并且失败了。
任何帮助将非常感激。
谢谢,
维克拉姆
解决方案
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>
推荐阅读
- c++ - 为什么c ++中的函数需要指针才能工作(按值传递,按引用传递)
- python - 在python中将对象列转换为int列
- flutter - Flutter:设置初始滚动偏移水平 ListviewBuilder 取决于日期
- excel - 基于单元格的具有多个标准的 Sumifs
- firebase - CLOUD_SDK_CREDENTIALS_WARNING 我们建议大多数服务器应用程序使用服务帐户
- facebook - branch.io 和 facebook 安装广告归因
- python - 使用一台网络服务器和两名工作人员管理不同的阶段
- json - Firebase 实时数据库:有没有办法在不覆盖现有数据的情况下导入 json?
- angular - 格式化 Ngx 仪表图的值以显示百分比
- python - 将熊猫数据框存储在磁盘上以进行频繁访问的最有效方法?