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 に答える