2016-09-28 4 views
1

私は非常に奇妙な問題があります。私は日付オブジェクト(月曜日)の配列を作成していますJavascriptプッシュで最初のアイテムが削除され続けます

// array to hold week commencing dates 
     var mondays = []; 
     mondays.push(today); 
     var novi = new Date(today); 

     while(novi < endDate){ 

      var next_monday = new Date(novi.setDate(novi.getDate() + 7)); 

      day_index = next_monday.getDay(); 
      if(day_index == 1){ 
       mondays.push(next_monday); 
      } 
      // increment the date 
      novi = next_monday; 
     } 
     console.log(mondays); 

更新:お返事ありがとうございます。私は最初に新しいオブジェクトを作成し、それを使用しました。再び、空の配列を作成してから、ループを開始する前に日付を1つ追加してからループの最初の項目が追加されます。何が間違っているのですか?

これは私が上から得ているconsole.logです。 https://www.dropbox.com/s/04bckfcrwl7yvwd/Screenshot%202016-09-28%2018.29.25.png?dl=0

+1

* today *が月曜日の場合、7日追加すると必ず月曜日に着陸し、* day_index *テストは不要です。 ;-) – RobG

答えて

12
today.setDate(today.getDate() + 7) 

あなたは、配列の中に押し込ま日付オブジェクトを変更しています。

最初の項目は削除されていないため、変更されています。

var next_monday = new Date(today.setDate(today.getDate() + 7)); 

その後、あなたはそれから新しいDateオブジェクトを作成します。


ことを変更し、その後、最初の新しい日付オブジェクトを作成します。

+0

ありがとう! ループの前に新しいオブジェクトを追加しましたが、現在は2番目の日付をスキップしています。 私は以下を追加しました: var novi = new Date(today); 次に、今日の代わりにループ全体に対して変数 "novi"を使用しました。だから私は最初の日付を取得し、次に何とかスキップし、その後、残りの部分は正常です。 https://www.dropbox.com/s/v21ylipmlkgsfhf/Screenshot%202016-09-28%2017.59.51.png?dl=0 –

+0

更新された質問。患者に感謝します。 –

+0

@GoranJakovljevic - あなたはまだ同じ問題を抱えているようです。唯一の違いは、最初の日付オブジェクトをループの前で作成していますが、関数に渡すのではなく関数の内部に作成することです。 – Quentin

関連する問題