gpt4 book ai didi

javascript - 如何使用循环中的一系列日期填充 Javascript 数组?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:58:49 26 4
gpt4 key购买 nike

这是我正在处理的代码:

    function populateDates() {
var start = new Date(2017, 7, 13);
var end = new Date(2017, 8, 3);
var tempDate = start;
var endPlus90 = end.setDate(end.getDate() + 90);
var today = new Date();
var array = [];
for(var d = start; d < today || d < endPlus90; d.setDate(d.getDate() + 1)){
if (d.getDay() !== 0 && d.getDay() !== 6){
array.push([d]);
}
}
return array;
}
var future = new Date();
future.setDate(future.getDate() + 90);
console.log(populateDates(new Date(), future));

基本上,我想要做的是,给定一个任意的开始和结束日期,生成一个日期列表,不包括周末,从开始日期到结束日期后 90 天,或当前日期,以哪个为准更早。当前函数生成一个数组,其中包含结束日期后 90 天的所有相同日期。我对 Javascript 不是很熟悉,所以我不确定这里出了什么问题。我怀疑我将变量推送到数组的方式不正确。

最佳答案

问题出在您对返回

setDate 的使用上

The number of milliseconds between 1 January 1970 00:00:00 UTC and the given date (the Date object is also changed in place). https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date/setDate

setDate 行包装在 new Date() 中,您的代码应该可以正常运行。


正如其他人所指出的,数组具有多个相同日期的原因是因为您将引用推送到同一个日期对象,并重新分配该对象的日期,这会更新每个引用。通过使用 new Date() 创建一个新的 Date,您将创建一个具有自己引用的新对象。

关于javascript - 如何使用循环中的一系列日期填充 Javascript 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46818384/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com