我试图循环检查第一个日期是否小于第二个日期。如果是,我想将值存储在数组中,在第一个日期添加1天,然后返回整个过程。我认为这就是我所写的内容,但我不确定为什么它不起作用。当我控制掉任何数组值时,它总是出现的最后一个日期,我无法获得任何其他值来存储。用Firebug踩过它后,看起来它们被覆盖了。我使用moment.js来获取日期。
var counter = 1;
var arr = [];
var i = firstDate.toDate();
for(counter; firstDate < secondDate; counter++){
arr[i]=firstDate.toDate();
firstDate.add(1, "day");
}
console.log(arr[2]);
非常感谢任何帮助!
答案 0 :(得分:2)
变量i
一旦设置就不会更改,因此您不断地写入相同的索引。
此外,您的counter
变量从未使用过。考虑使用counter
变量作为索引,因为它对于每次迭代都是唯一的。或者,如果您想继续将日期用作索引,请将行i = firstDate.toDate();
添加到for循环的顶部。
对于后者,你的循环应如下所示:
var counter = 1;
var arr = [];
var i = firstDate.toDate();
for(counter; firstDate < secondDate; counter++){
i = firstDate.toDate();
arr[i]=firstDate.toDate();
console.log(firstDate.toDate());
firstDate.add(1, "day");
}
console.log(arr[2]);
如果您遇到问题,建议您在循环中添加一个控制台日志(如上所述),以查看在添加日期时添加的日期。
答案 1 :(得分:0)
由于事先不知道第一个和第二个日期之间的差异,您可以使用while循环
while( firstDate.isBefore(secondDate) ) {
arr.push(firstDate.toDate());
firstDate.add(1, 'day');
}