2017-05-29 111 views
1

我想使用數組來獲得特定的結果,但我得到的錯誤無法讀取未定義的的屬性,但當我控制檯登錄相同的屬性我得到我的結果在這裏是我的代碼:無法讀取未定義錯誤的屬性

for (var j=0;j<$scope.ftListe.length;j++){ 
    if(task[j].projet_id==id){ 
     if(temp!=task[j].NomTache) 
      temptache.push(task[j]); 
     tempcol.push(lecollaborateur[j]); 
    } 
    temp=task[j].NomTache; 
} 
$scope.temptache=temptache; 
$scope.tempcol=tempcol; 

for(var i=0; i<temptache.length;i++){ 
    for (var k=0;k<$scope.ftListe.length;i++){ 
     console.log("l'id de la tache: "+temptache[i].IdTache); 
     if(temptache[i].IdTache==$scope.ftListe[k].tacheid){ 
      temps = temps+$scope.ftListe[k].TempsPasse; 
      passe= passe+$scope.ftListe[k].TempsPasse * lecollaborateur[k].CoutParJour; 
     } 
    } 
    tempsAr.push(temps); 
    passeAr.push(passe); 
    temps=0; passe=0; 
} 

從我得到的錯誤的性質是IdTache,我究竟做錯了什麼?

+0

控制檯temptache並檢查是否有IdTache? –

+0

@Dinesh當我控制檯temptache [我] .IdTache我得到的結果沒有問題 – Jihane

+0

如果你真的想要幫助,你應該提供給我們一個Plunkr或JSFiddle,所以我們可以調試,因爲我們不能這樣幫忙。 – SjaakvBrabant

回答

2

請看看下面幾行:

for(var i=0; i<temptache.length;i++){ 
    for (var k=0;k<$scope.ftListe.length;i++){ 

注意的是,在內部for循環,你遞增i變量(i++),而不是k。所以這使得i在內部循環中增加到越界偏移量。你的腳本進入一個無限循環 - 所以當你說「當我控制檯登錄相同的屬性,我得到了我的結果」它實際上顯示的結果,直到你'重新在temptache陣列的有效範圍內。

你應該修復它:

for(var i=0; i<temptache.length;i++){ 
    for (var k=0;k<$scope.ftListe.length;k++){ 
+3

星期一可以很粗糙...... ;-) – Matheno

+1

@AlonEitan,我完全錯過了,謝謝大家 – Jihane

相關問題