2016-11-14 70 views
2

所以我试图创建一个程序,它遍历2D数组,直到找到匹配的票据;然而,当程序发现阵列内的数字它不会中断:突破循环的问题

var namesArray = ["Reece", "Jack", "Lewis", "Ryan"]; 

    var raffleArray = [ 
     [193, 109, 97, 479], 
     [489, 046, 387, 830], 
     [475, 947, 294, 590], 
     [330, 395, 750, 649] 
    ]; 

    //function getRandomNum(){ 
    // return Math,floor(Math.random() * (999 -)) 
    //} 

    //loops through the 2D array to search for 
    for (j = 0; j < 5; j++) { 
     for (i = 0; i < raffleArray[j].length; i++) { 
     if (raffleArray[j][i] == 294) { //294 is only set for testing 
      alert(namesArray[j] + " has won the raffle with ticket number:   " + raffleArray[j][i]); 
      break; 
     } else { 
      alert("Ticket: " + raffleArray[j][i]+ " did not win"} //only for testing 
     } 
    }} 

希望有人能帮助!

+0

歇只会打破你内for循环.. – Keith

+0

'为(J = 0;Ĵ<5; J ++)''namesArray'has只有4个成员,所以不宜它是'Ĵ<4' ,甚至更好'j connexo

+0

你的'j <5'也是错的,..只有4个元素..也许'j Keith

回答

5

您需要标记外部循环以打破两者。

search:for (j = 0; j < 4; j++) { 
    for (i = 0; i < raffleArray[j].length; i++) { 
     if (raffleArray[j][i] == 294) { //294 is only set for testing 
     alert(namesArray[j] + " has won the raffle with ticket number:   " + raffleArray[j][i]); 
     break search; 
     } 
    }} 
0

您可以使用一个临时变量来打破外环为:

var found = false; 

    //loops through the 2D array to search for 
    for (j = 0; j < 5; j++) { 
     for (i = 0; i < raffleArray[j].length; i++) { 
     if (raffleArray[j][i] == 294) { //294 is only set for testing 
      found = true; 
      alert(namesArray[j] + " has won the raffle with ticket number:   " + raffleArray[j][i]); 
      break; 
     } else { 
      alert("Ticket: " + raffleArray[j][i]+ " did not win"} //only for testing 
     } 
     if(found) { 
     break; 
     } 
    }} 
0

你需要设置一个标志,停止外循环。

var namesArray = ["Reece", "Jack", "Lewis", "Ryan"]; 

var raffleArray = [ 
    [193, 109, 97, 479], 
    [489, 046, 387, 830], 
    [475, 947, 294, 590, 294], 
    [330, 395, 750, 649] 
]; 

//function getRandomNum(){ 
// return Math,floor(Math.random() * (999 -)) 
//} 

//loops through the 2D array to search for 
var winner = false; 
for (j = 0; j < 5; j++) { 
    if(!winner) { 
    for (i = 0; i < raffleArray[j].length; i++) { 
     if (raffleArray[j][i] == 294) { 
      //294 is only set for testing 
      winner = true; 
      alert(namesArray[j] + " has won the raffle with ticket number:   " + raffleArray[j][i]); 
      break; 
     } else { 
      alert("Ticket: " + raffleArray[j][i] + " did not win") 
     } 
    } 
    } 
} 
1

取一个布尔变量来查找所需的元素是否匹配。一旦发现破环内循环。您必须将布尔变量赋予true。如果布尔变量var是真的,那么打破外层循环。

var isFound = false; 

    //loops through the 2D array to search for 
    for (j = 0; j < 5; j++) { 
     for (i = 0; i < raffleArray[j].length; i++) { 
     if (raffleArray[j][i] == 294) { //294 is only set for testing 
      found = true; 
      alert(namesArray[j] + " has won the raffle with ticket number:   " + raffleArray[j][i]); 
      break; 
     } else { 
      alert("Ticket: " + raffleArray[j][i]+ " did not win"} //only for testing 
     } 
     if(isFound) { 
     break; 
     } 
    }}