【问题标题】:Adding dates to an array through a loop通过循环将日期添加到数组
【发布时间】:2012-10-29 09:00:52
【问题描述】:

我正在执行一个 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);

【问题讨论】:

    标签: javascript date for-loop


    【解决方案1】:

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

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

    【讨论】:

    • 但是那不是总是在今天后 2 天给出一个日期吗?而不是 50 个日期相隔两天?
    • 并将+2更改为+(2*i)
    • @glennsayers:你要到什么日期?我认为您将获得所有 50 个对象,其日期与今天之后的 100 天相同,即 2013 年 2 月 16 日。
    • 正确,我是。所以它将同一个对象放入数组中 50 次,所以当我更新一个对象时,它们都会更新吗?我现在明白了。谢谢!
    【解决方案2】:

    你可以按照 Yogendra 的建议去做,或者改变:

    > dates.push(currentDate);
    

    到

    dates.push(new Date(currentDate));
    

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

    【讨论】:

      猜你喜欢
      • 2021-07-01
      • 2020-04-09
      • 2023-03-26
      • 2017-08-23
      • 1970-01-01
      • 2023-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多