我无法发布图片,只是尝试调试...
function myFunction() {
var test=[];
var startDate = new Date(2014,11, 01); //01 dic 2014
var nextDate = startDate ;
for (i=0; i<=10; i++){
test.push(nextDate);
nextDate.setDate(nextDate.getDate()+1);
}
答案 0 :(得分:1)
您一直在推送相同的日期对象。 尝试如下:
function myFunction() {
var test=[];
var startDate = new Date(2014,11, 01); //01 dic 2014
var nextDate = startDate ;
for (i=0; i<=10; i++){
var newDate = new Date(nextDate.setDate(nextDate.getDate()+1));
test.push(newDate);
}
Logger.log(JSON.stringify(test));
}
编辑:
为了使事情更加清晰,并且在整个脚本执行过程中显示nextDate
变量仍然相同,这里有一个示例,显示原始代码中发生的情况。我在循环中记录了nextDate
的值,然后记录了结果数组。您确实可以看到,当它们在循环中发生变化时,数组中的所有值都是相同的(并且数组中的值是循环中的最后一个值)。
现在让我们再次更改nextDate
并重新检查数组,所有值都会再次更改,这实际上是因为我们有一个唯一的对象。
下面的错误代码:
function myFunction2() {
var test=[];
var startDate = new Date(2014,11, 01); //01 dic 2014
var nextDate = startDate ;
for (i=0; i<=10; i++){
test.push(nextDate);
Logger.log(nextDate);
nextDate.setDate(nextDate.getDate()+1);
}
Logger.log(test);
nextDate.setDate(0);
Logger.log(test);
}
导致记录器: