[英]JavaScript - For Loop to add days in a month object - moment.js
我試圖將一個月中的每一天分配給我的對象,但我只能得到每個月的最后一天。 我該怎么做才能得到整月的分配?
function loopRange (startDate, range) {
let fromDate = moment(startDate)
let toDate = moment(startDate).add(range, 'month')
let dates = {}
for (let m = moment(fromDate); m.diff(toDate, 'days') <= 0; m.add(1, 'days')) {
dates['month_' + m.format('MM')] = {
'date': m.format('YYYY-MM-DD')
}
}
return dates
}
我想要的結果:
dates = {month_11: ['2018-11-01', '2018-11-02', ...]}
您只能獲得最后一天,因為您的 for 循環以天為間隔推進。
但是,當分配給dates
dic 時,您將月份作為鍵 - 因此每次迭代(在同一個月內)都會用新的一天覆蓋前一個鍵 -> 這樣你就只能得到月份中的那一天...
如果要將時間范圍內的所有日期作為數組元素除以月份鍵,則可以使用以下代碼:
for (let m = moment(fromDate); m.diff(toDate, 'days') <= 0; m.add(1, 'days'))
{
let month_key = 'month_' + m.format('MM');
if (!dates.hasOwnProperty(month_key))
dates[month_key] = [];
dates[month_key].push(m.format('YYYY-MM-DD'));
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.