JavaScript:在for循环中存储数组中的日期

时间:2014-11-19 14:10:13

标签: javascript arrays for-loop momentjs

我试图循环检查第一个日期是否小于第二个日期。如果是,我想将值存储在数组中,在第一个日期添加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]);

非常感谢任何帮助!

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');
}