2015-05-29 3 views
0

Я работаю над массивом массива, и я хочу проверить каждое первое значение, но все, что я получаю, это Uncaught 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) 'return? Если один из них не возвращает ожидаемое содержимое, это скорее всего ошибка. –

+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