如何在 javascript 中获取下周一的 10 个数组

How to get an array of 10 next Mondays in javascript

这是我的代码,但是这个数组 returns 只有相同的元素,我正在尝试创建一个包含 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)

getNextDayOfWeek 被赋予相同的输入,因此将具有相同的输出。

您需要:

  1. 建立基准日期并将其作为第三个参数传递
  2. 在后续调用中传递结果日期,使其提前
  3. 表示如果与请求的日期匹配则应排除基线日期
  4. 在结果数组中插入一个 new Date,因为日期是对象,因此通过引用传递。如果您不这样做,每次调用 getNextDayOfTheWeek 都会更改存储在结果数组每个位置中的同一个对象。
  5. 请注意,您的当地时间可能会导致显示的日期早于或晚于预计日期。您可能需要决定如何考虑当地时区(请注意,结果可能会在指示 UTC 的时间结束时显示 Z)。
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)