2016-11-14 3 views
2

Может ли кто-нибудь объяснить, почему 4-й дополнительный массив больше не работает? Я считаю, потому что input[(i + 1)] is undefined? Но это работает для другого ... Я новичок и все еще учусь, как найти лучший вариант.Js: ошибка многомерного массива вложенных в то время как половина этого все еще работает

function dataHandling(){ 


    for (var i=0;i < input.length ; i++){ 
    for(var j=0; j < input[i].length; j++) 
    /* 
     if(j === 0){ 
     console.log("Nomor ID: "+ input[i][j]); 
     } 
     else if(j=== 1){ 
     console.log("Name: "+ input[i][j]); 
     } 
     else if(j=== 2){ 
     console.log("Birthplace n date: "+ input[i][j] +" " + input[i+1][j+1]); 
     } 
     else if(j=== 4){ 
     console.log("Hobby: "+ input[i][j] +"\n"); 
     } 
     */ 
    switch(j){ 
     case 0: 
      console.log("Nomor ID: "+ input[i][j]); 
      break; 

      case 1: 
      console.log("Name: "+ input[i][j]); 
      break; 

      case 2: 
      console.log("Birthplace and date: "+ input[i][j] +" " + input[i+1][j+1]); 
      break; 

      case 3: 
     // console.log("birthdate: "+ input[i][j]); 
      break; 

      case 4: 
      console.log("Hobby: "+ input[i][j] +"\n"); 
      break; 

      default: 
     break; 
     } 


    } 

} 

var input = [ 
       ["0001", "Roman Alamsyah", "Bandar Lampung", "21/05/1989", "Reading"], 
       ["0002", "Dika Sembiring", "Medan", "10/10/1992", "Playing Guitar"], 
       ["0003", "Winona", "Ambon", "25/12/1965", "Cooking"], 
       ["0004", "Bintang Senjaya", "Martapura", "6/4/1970", "Codding"] 
       ]; 

dataHandling(input); 

Пока он работает на 1-ом-третьих массивов, это всегда ошибки в 4:

Nomor ID: 0003 
Name: Winona 
Birthplace n date: Ambon 6/4/1970 
Hobby: Cooking 

Nomor ID: 0004 
Name: Bintang Senjaya 
TypeError: input[(i + 1)] is undefined <<< 

Я могу понять, если с момента первого i будет ошибка, но только 4-го i, которые не в состоянии прочитайте следующую подматрицу. (Извините за объяснение с помощью новичков, все еще трудно объяснить с ограниченными знаниями.)

ответ

2

Прежде всего, я хотел бы просто сказать, что вы до сих пор замечательно изучаете Javascript. Ошибка заключается в том, что вы пытаетесь получить доступ к пятому массиву при i=4 и используете input[i+1][j+1]. К счастью, это даже не проблема; что вы хотите сделать, это доступ к тем же суб-массив, но следующий элемент, поэтому только j должен быть увеличен на 1 (input[i][j+1]):

function dataHandling(){ 
 

 

 
    for (var i=0;i < input.length ; i++){ 
 
    for(var j=0; j < input[i].length; j++) 
 
    /* 
 
     if(j === 0){ 
 
     console.log("Nomor ID: "+ input[i][j]); 
 
     } 
 
     else if(j=== 1){ 
 
     console.log("Name: "+ input[i][j]); 
 
     } 
 
     else if(j=== 2){ 
 
     console.log("Birthplace n date: "+ input[i][j] +" " + input[i+1][j+1]); 
 
     } 
 
     else if(j=== 4){ 
 
     console.log("Hobby: "+ input[i][j] +"\n"); 
 
     } 
 
     */ 
 
    switch(j){ 
 
     case 0: 
 
      console.log("Nomor ID: "+ input[i][j]); 
 
      break; 
 

 
      case 1: 
 
      console.log("Name: "+ input[i][j]); 
 
      break; 
 

 
      case 2: 
 
      console.log("Birthplace and date: "+ input[i][j] +" " + input[i][j+1]); 
 
      break; 
 

 
      case 3: 
 
     // console.log("birthdate: "+ input[i][j]); 
 
      break; 
 

 
      case 4: 
 
      console.log("Hobby: "+ input[i][j] +"\n"); 
 
      break; 
 

 
      default: 
 
     break; 
 
     } 
 

 

 
    } 
 

 
} 
 

 
var input = [ 
 
       ["0001", "Roman Alamsyah", "Bandar Lampung", "21/05/1989", "Reading"], 
 
       ["0002", "Dika Sembiring", "Medan", "10/10/1992", "Playing Guitar"], 
 
       ["0003", "Winona", "Ambon", "25/12/1965", "Cooking"], 
 
       ["0004", "Bintang Senjaya", "Martapura", "6/4/1970", "Codding"] 
 
       ]; 
 

 
dataHandling(input);

Смежные вопросы