如何避免条件循环?
How to avoid a condition from looping?
我必须为 JavaScript 编写控制台宾果游戏。这是我将参加的训练营之前必须做的一些练习之一,所以请记住我是新手。
如果有人不知道游戏:
- 您将有一张显示 15 个数字(不重复且随机)的“卡片”
- 每一轮都会显示一个随机数(宾果球)。
- 数字从 1 到 90,因此球和宾果卡都会有这些数字。
- 当球的号码与您卡片中的其中一个号码相同时,您的卡片号码将更改为'X'。
既然我已经解释过了,我的问题如下:
我有一个函数可以生成一个每回合都有一个随机数的球。为了知道某个号码是否已经出局,我创建了一个数组来推送已经出局的号码。这样我们就可以用 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 - 如果你想了解这个方法
我必须为 JavaScript 编写控制台宾果游戏。这是我将参加的训练营之前必须做的一些练习之一,所以请记住我是新手。 如果有人不知道游戏:
- 您将有一张显示 15 个数字(不重复且随机)的“卡片”
- 每一轮都会显示一个随机数(宾果球)。
- 数字从 1 到 90,因此球和宾果卡都会有这些数字。
- 当球的号码与您卡片中的其中一个号码相同时,您的卡片号码将更改为'X'。
既然我已经解释过了,我的问题如下: 我有一个函数可以生成一个每回合都有一个随机数的球。为了知道某个号码是否已经出局,我创建了一个数组来推送已经出局的号码。这样我们就可以用 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 - 如果你想了解这个方法