Ниже вы можете найти код для создания случайных 8 чисел между 1 и 80. Он помещает случайные числа в массив чисел и записывает их в div. Код работает без каких-либо проблем, если он увеличивает x внутри, если скобки. Если я поставил «x ++» за пределы скобок, после нескольких прогонов я обнаружил, что иногда он создает одно и то же случайное число и находит внутри массива чисел. Затем он пропускает и этот div пуст.Javascript if statement in while loop
В чем разница между приращением x в if block и приращением x снаружи, если блок?
Внутри если блок:
var numbers = []
var luckyNumber;
var x = 1;
while (x <= 8) {
luckyNumber = Math.floor(Math.random() * 80 + 1);
if (numbers.indexOf(luckyNumber) == -1) {
document.getElementById('k' + x).innerHTML = luckyNumber;
numbers.push(luckyNumber);
x++;
}
}
Вне если блок:
var numbers = []
var luckyNumber;
var x = 1;
while (x <= 8) {
luckyNumber = Math.floor(Math.random() * 80 + 1);
if (numbers.indexOf(luckyNumber) == -1) {
document.getElementById('k' + x).innerHTML = luckyNumber;
numbers.push(luckyNumber);
}
x++;
}
HTML:
<div id="k1">K1</div>
<div id="k2">K2</div>
<div id="k3">K3</div>
<div id="k4">K4</div>
<div id="k5">K5</div>
<div id="k6">K6</div>
<div id="k7">K7</div>
<div id="k8">K8</div>
Продолжает ли он создать случайное число и проверить, если он уже в цифрах массива? Я думал, что если оператор выполняется один раз для каждой итерации цикла while. Поэтому он не будет увеличиваться до тех пор, пока условие не будет истинным и продолжит попытки. Правильно ? –
@ user7580495 Да. В противном случае, если он генерируется и найден в массиве, вам нужно снова создать и проверить. Не так ли? Это происходит прямо сейчас. –