2017-07-27 76 views
0

問題功能:「無法讀取屬性未定義‘推’」遞歸函數,陣營

filterItemsMonth(items, start, end, arr){ 
    console.log(arr); 

    if(!start.isAfter(end, "day")) { 
     console.log(arr); 
     arr.push(this.filterItemsWeek(items, start, start.add(1, "week")), []) 
     start.add(1, "week"); 
     this.filterItemsMonth(items, start, end, arr); 
    } 
    return arr; 
    } 

這是調用這個函數:

filterItemsWeek(items, start, end, arr){ 
    arr.push((items.filter((item) => { 
     return start.isSame(moment(item.date_started), "day"); 
     })).sort((a, b) => { 
     return parseInt(a.time_started) - parseInt(b.time_started); 
     })); 
    if(!start.isSame(end, "day")) { 
     start.add(1, "day"); 
     this.filterItemsWeek(items, start, end, arr); 
    } 
     return arr; 
    } 

我的格式對不起,希望該代碼足夠清晰。

以下函數filterItemsWeek正常工作。它需要一系列對象,並根據它們的date屬性對它們進行排序,只取對象來自給定的一週,然後將其放入與一週的某一天對應的子陣列中。

我想複製相同的功能,但整個月,我認爲會工作,但我有麻煩。理想情況下,我在一個月內每週運行一次底部遞歸函數,所以我有一個週數組,每個數組包含一週內當天發生的事件數組。

出於某種原因,我收到控制檯錯誤「無法讀取未定義的屬性.push」。 console.log語句顯示正確的值(一個空數組[],該函數被傳遞),但由於某種原因,我的函數認爲空數組是未定義的。

我正在使用React JS,但我不認爲這是一個React問題。 filterItemsWeek函數工作得很好,並且這兩個函數都綁定到我的組件構造函數。任何幫助表示讚賞,這對我來說是一個真正的愚蠢!

回答

1
arr.push(this.filterItemsWeek(items, start, start.add(1, "week")), []) 

應該是:

arr.push(this.filterItemsWeek(items, start, start.add(1, "week"), [])) 
+1

你提出的聲明缺少一個右括號。 – Titus

+0

謝謝,我已修復它。 –

+0

聖牛不敢相信我錯過了! –

相關問題