Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/479.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用循环中的一系列日期填充Javascript数组?_Javascript_Arrays_Date - Fatal编程技术网

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

如何使用循环中的一系列日期填充Javascript数组?,javascript,arrays,date,Javascript,Arrays,Date,以下是我正在编写的代码: 函数填充(){ 风险值开始=新日期(2017年7月13日); var结束=新日期(2017年8月3日); var tempDate=开始; var endPlus90=end.setDate(end.getDate()+90); var today=新日期(); var数组=[]; for(var d=start;d

以下是我正在编写的代码:

函数填充(){
风险值开始=新日期(2017年7月13日);
var结束=新日期(2017年8月3日);
var tempDate=开始;
var endPlus90=end.setDate(end.getDate()+90);
var today=新日期();
var数组=[];
for(var d=start;dlog(填充(新日期(),未来))使用返回的
setDate
时会出现问题

1970年1月1日00:00:00 UTC和给定日期之间的毫秒数(日期对象也会发生相应的更改)。

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



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

试试这个。每次都需要将
d
初始化为新日期。你不能只改变
日期
。您还需要在
end.setDate()
周围放置
newdate()
<代码>设置日期()
返回毫秒

function populateDates(start, end) {
    var tempDate = start;
    var endPlus90 = new Date(end.setDate(end.getDate() + 90));
    var today = new Date();
    var array = [];
    for(var d = tempDate; d < endPlus90; d = new Date(d.setDate(d.getDate() + 1))){ 
      if(d >= today) { // Stop counting dates if we reach the current date
        break;
      } 
      if (d.getDay() !== 0 && d.getDay() !== 6){
        array.push([d]);
      }
    }
    return array;
}

var future = new Date(); // As of 10/18/2017
future.setDate(future.getDate() + 90);
console.log(populateDates(new Date(2017, 9, 1), future)); // Prints 13 days as of 10/18/2017   
console.log(populateDates(new Date(2016, 9, 1), future)); // Prints 273 days
函数填充(开始、结束){
var tempDate=开始;
var endPlus90=新日期(end.setDate(end.getDate()+90));
var today=新日期();
var数组=[];
对于(vard=tempDate;d=今天){//如果我们到达当前日期,停止计算日期
打破
} 
如果(d.getDay()!==0和d.getDay()!==6){
array.push([d]);
}
}
返回数组;
}
var future=新日期();//截至2017年10月18日
future.setDate(future.getDate()+90);
console.log(填充日期(新日期(2017年9月1日),未来));//自2017年10月18日起打印13天
console.log(填充日期(新日期(2016年9月1日),未来));//打印273天

您是否尝试消除bug?您是否可以将示例
开始
结束
参数添加到相关函数中?看@giant敌军间谍,你的问题不清楚。你什么时候需要停止推约会?在结束日期或开始日期后的90天(哪一天更小)?这归结为不可变类的原理。阅读更多关于不可变在java中的含义的内容,您将了解代码中发生了什么。不要忘记说明为什么它总是在结束日期后90天打印。