我正在进行for循环,在当前日期添加时间,并将新日期添加到数组中。 但是,当循环完成后输出数组时,它将填充50个相同日期的实例。 但是,从循环内记录这些日期会显示它们正确递增。 这是否与已经被推入阵列的数据有关?
var dates = new Array();
var currentDate = new Date();
for (var i =0; i < 50;i++){
currentDate.setDate(currentDate.getDate()+2);
console.log(currentDate);
dates.push(currentDate);
}
console.log(dates);
答案 0 :(得分:4)
将var currentDate = new Date();
移到for循环中。否则,您修改同一个对象并在数组中添加50个引用。
最后,您会看到使用上次更新的日期值打印50次相同的对象。
答案 1 :(得分:1)
你可以像Yogendra建议的那样做,或改变:
> dates.push(currentDate);
到
dates.push(new Date(currentDate));
为数组的每个成员获取不同的日期对象。