2015-05-29 35 views
0

我正在處理數組的數組,我想測試每個第一個值,但所有我得到的是未捕獲的TypeError:無法讀取未定義的屬性'0'。 請幫忙!未定義的數組數組中的屬性

function getManualDesactivation(data){ 

var tab=[]; 
var l=data.length ; 
var listeService= getCategorie(data); 
var resultat=[]; 

for(var i=0; i<l;i++){ 
     if (data[i][1] == "DESACTIVATION") { 
      var subtab=[]; 
      subtab.push(data[i][0]); 
      subtab.push(data[i][2]); 
     tab.push(subtab); 


     }  
} 

if (tab.length > 1) { 
    var j = 0; 
    for (var i = 0; i < listeService.length; i++) { 

     if (listeService[i] == tab[j][0]) {<---- here is the exception 
      resultat.push(tab[j][1]); 

      j++; 
     } else { 

      resultat.push(0); 
      j++; 
     } 

    } 
} 
+0

您可以創建您的問題小提琴? – Zee

+0

什麼是'data'變量包含什麼和'getCategorie(data)'返回的是什麼?如果其中一個沒有返回預期的內容,那麼這可能是錯誤。 –

+1

可能* i *大於* j *,所以'j ++'會導致* j *增加到並超出'tab.length',所以'tab [j]'返回* undefined *。 – RobG

回答

2

該錯誤是由於嘗試訪問不存在的變量的0索引而導致的。

要確保你正在檢查規定值的指數,你可以寫:

if (tab[j] && listeService[i] == tab[j][0]) { 
     resultat.push(tab[j][1]); 

     j++; 
    } else { 

     resultat.push(0); 
     j++; 
    } 
+0

我正要寫這個 – romuleald