2016-09-28 43 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); 

更新:感謝您的回覆。我在開始時創建了一個新對象,並使用了這個對象。因此我又創建了空數組,然後在開始循環之前給它添加了一個日期,然後循環中的第一項不會被添加,即使它被推入。我究竟做錯了什麼?

這是我從上面得到的console.log。 https://www.dropbox.com/s/04bckfcrwl7yvwd/Screenshot%202016-09-28%2018.29.25.png?dl=0

+1

如果*今天*是星期一,則添加7天將永遠在星期一着陸,不需要* day_index *測試。 ;-) – RobG

回答

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

您正在修改你推入陣之日起的對象。

第一項沒有被刪除,它正在被更改。

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

然後你從它創建一個新的日期對象。


創建新的日期對象第一,然後修改

+0

謝謝! 我在循環之前添加了新的對象,但現在它跳過了第二個日期。 我加了: 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