如何避免条件循环?

How to avoid a condition from looping?

我必须为 JavaScript 编写控制台宾果游戏。这是我将参加的训练营之前必须做的一些练习之一,所以请记住我是新手。 如果有人不知道游戏:

既然我已经解释过了,我的问题如下: 我有一个函数可以生成一个每回合都有一个随机数的球。为了知道某个号码是否已经出局,我创建了一个数组来推送已经出局的号码。这样我们就可以用 if 条件创建一个循环来检查球的值是否与 arrays[i] 数字相同。 我这样做的方式,开始很好,但最终弄乱了 chrome 的控制台......尽可能接近数组中的 90 个数字,它开始迭代数组并生成随机数编号,直到找到剩余的最后一个编号。

我将在下面粘贴我正在谈论的代码部分。

function bingo(){
   console.table(bingoCard);
   bombo();
   for (let i = 0; i < bingoCard.length; i++){
      if (bola === bingoCard[i].number){
         bingoCard[i].number = 'X';
         bingoCard[i].matched = true;
      }
   }
   continuar = confirm('¿Continuar?');

   if (continuar === true){
      console.table(bingoCard);
      bingo();
   }else {
      return 'Hasta la próxima';
   }
}

function randomNum(){
   let min = 1;
   let max = 90;
   return Math.floor(Math.random() * (max - min) + min);
}
         
function bombo(){

   bola = randomNum();
   console.log(+ bola + 'antes de bucle'); //test
   for (let i = 0; i < numbersOut.length; i++){
      if (bola === numbersOut[i]){
         bingo();
      }
   }
   numbersOut.push(bola);
   console.log(numbersOut);
   alert('Ha salido el número ' + bola);   
}

您可以改为创建一个包含 1 到 90 之间数字的数组,然后随机打乱它。

function shuffleArray(array) {
    for (let i = array.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [array[i], array[j]] = [array[j], array[i]];
    }
}

https://en.wikipedia.org/wiki/Fisher%E2%80%93Yates_shuffle#Modern_method - 如果你想了解这个方法