2017-01-09 26 views
-1

幾天前我開始學習編碼,而且幾乎完成了我的第一個程序。但是,最終我現在遇到了一個問題,我似乎無法弄清楚自己有什麼問題。Javascript - 這個函數和循環有什麼問題?

該程序應該幫助我按星期和一天中的時間排序一堆日期。日期被寫爲「YYMMDD-」,然後是一天中的時間(僅小時),例如「170109-06」。

我有我想在數組中排序的所有日期(時間),並且下面的函數和循環應該刪除與特定年份不匹配的所有日期。

變澄清:

時間 - 陣列,其中包括日期和時間(都是一樣的幾個月,但不同年份(如[ 「161102-03」, 「151127-11」]

yearDate - 第4個數字的日期,那將留在陣中

function checkDate (date) { 
    var yearMonth = date.slice(0, 4); 
    var index = time.indexOf(date) 
    if (yearMonth != yearDate) { 
     time.splice(index, index + 1); 
    } 
    else { 
    } 
} 

for (var i = 0; i <= time.length; i++) { 
    checkDate(time[i]); 
} 

此代碼似乎偶爾工作,但有時從陣列弦數呆在那裏時,他們應該被刪除,所以。療法e的代碼顯然是錯誤的。

我希望你能明白我的意思。我確實意識到這篇文章最終有些毛茸茸。

+0

你試圖自己調試呢? –

+0

請參考[Tour](https://stackoverflow.com/tour),閱讀[如何提問](https://stackoverflow.com/help/how-to-ask)並提供[MCVE](https ://stackoverflow.com/help/mcve)。你有沒有諮詢你的[橡皮鴨](https://ericlippert.com/2014/03/05/how-to-debug-small-programs/)? –

回答

1

標準錯誤。您在迭代時正在從數組中刪除項目。每次刪除一個項目時,遞增迭代器都會跳過下一個元素,與刪除的元素相鄰。

倒回:

for (var i = time.length - 1; i >= 0; i--) { 
    checkDate(time[i]); 
}