這是我的代碼,但這個陣列只回傳相同的元素,我正在嘗試創建一個包含 10 個元素的陣列,因為下周一有人知道請幫助我
我的代碼:
function getNextDayOfTheWeek(dayName, excludeToday = true, refDate = new Date()) {
const dayOfWeek = ["sun","mon","tue","wed","thu","fri","sat"]
.indexOf(dayName.slice(0,3).toLowerCase());
if (dayOfWeek < 0) return;
refDate.setHours(0,0,0,0);
refDate.setDate(refDate.getDate() !!excludeToday
(dayOfWeek 7 - refDate.getDay() - !!excludeToday) % 7);
return refDate;
}
let arr=[]
for(let i=0;i<10;i ){
arr.push(arr[i]=getNextDayOfTheWeek("Monday",false))
}
console.log(arr)
uj5u.com熱心網友回復:
getNextDayOfWeek被賦予相同的輸入,因此將具有相同的輸出。
你需要:
- 建立基線日期并作為第三個引數傳遞
- 在后續呼叫中傳遞結果日期以使其前進
- 指示如果它與請求的日期匹配,則應排除基線日期
- 將 a
new Date插入結果陣列,因為 Dates 是物件,因此通過參考傳遞。如果你不這樣做,每次呼叫getNextDayOfTheWeek都會對存盤在結果陣列每個位置的同一個物件進行更改。 - 請注意,您的當地時間可能會導致顯示的日期顯示在預期日期之前或之后。您可能需要決定如何計算本地時區(請注意,結果可能會
Z在指示 UTC 的時間結束時顯示)。
let arr=[]
let refDate = new Date()
for(let i=0;i<10;i ){
refDate = getNextDayOfTheWeek("Monday",false, refDate)
arr.push(refDate)
}
function getNextDayOfTheWeek(dayName, excludeToday = true, refDate = new Date()) {
const dayOfWeek = ["sun","mon","tue","wed","thu","fri","sat"]
.indexOf(dayName.slice(0,3).toLowerCase());
if (dayOfWeek < 0) return;
refDate.setHours(0,0,0,0);
refDate.setDate(refDate.getDate() !!excludeToday
(dayOfWeek 7 - refDate.getDay() - !!excludeToday) % 7);
return refDate;
}
let arr=[]
let refDate = new Date()
for(let i=0;i<10;i ){
refDate = getNextDayOfTheWeek("Monday", i > 0 ? true : false, refDate)
arr.push(new Date(refDate))
}
console.log(arr)
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/469953.html
標籤:javascript 数组 日期
