2016-11-14 69 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; 
     } 
    }}