0

我正在经历一个 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);
4

2 回答 2

4

移入var currentDate = new Date(); for 循环。否则,您将修改同一个对象并在数组中添加 50 个对它的引用。

最后,您会看到同一个对象使用最后更新的日期值打印了 50 次。

于 2012-11-09T02:40:39.640 回答
1

您可以按照 Yogendra 的建议进行操作,或更改:

> dates.push(currentDate);

dates.push(new Date(currentDate));

为数组的每个成员获取不同的日期对象。

于 2012-11-09T02:58:29.883 回答