5 случайных чисел.Как продолжается if (arr.indexOf (randnum)> -1);предотвратить дублирование? - PullRequest
0 голосов
/ 25 сентября 2018

Я создаю array с 5 случайными числами, которые не повторяются для power-ball.Я понимаю большую часть этого блока, но я все еще новичок, и я не до конца понимаю, как if(arr.indexOf(randnum) > -1) continue; предотвращает дублирование.

Любое объяснение будет высоко оценено.

let arr = [];
while(arr.length < 5){
    let randnum = Math.floor(Math.random() * 69) + 1;
    if(arr.indexOf(randnum)> -1) continue;
    arr[arr.length] = randnum;
}
console.log(arr);

Ответы [ 3 ]

0 голосов
/ 25 сентября 2018

Итак, в основном array.indexOf -> если элемент существует, он вернет свой индекс, если нет, он вернет -1.

continue означает, игнорировать остальную часть кода внутри цикла и начать другую итерацию в цикле.

if (arr.indexOf (randnum)> -1) продолжаться; означает, что если индекс элемента больше -1, что означает, что элемент был найден, то продолжить, значит, donне выполнить эту строку arr [arr.length] = randnum;

0 голосов
/ 25 сентября 2018

Хороший способ разбить функцию на части, чтобы лучше понять, как она работает, - установить более низкий диапазон возможных значений.В приведенном ниже примере возможны значения 1-5.Если вы запустите приведенный ниже фрагмент кода, вы сможете увидеть, когда обнаружены повторяющиеся значения.

arr.indexOf(randnum) > -1 определяет, существует ли значение для randnum в массиве.Если в массиве существует значение, функция возвращает значение, большее -1.В противном случае возвращается -1, чтобы указать, что он не существует в массиве.

Если приведенное выше значение равно true, будет выполнено continue, которое пропускает arr[arr.length] = randnum;, что отвечает за добавление нового номерав массив.

let arr = [];
while (arr.length < 5) {
  let randnum = Math.floor(Math.random() * 5) + 1;
  if (arr.indexOf(randnum) > -1) {
    console.log("Duplicate detected: " + randnum);
    console.log("Current array values: " + arr);
    continue;
  }
  arr[arr.length] = randnum;
}
console.log(arr);
0 голосов
/ 25 сентября 2018

arr.indexOf (randnum) находит индекс числа "randnum" в массиве "arr":

Например [2,5,7,11,6] .indexOf (7) == 2, потому что число 7 находится во второй позиции.

возвращает -1, если число не найдено: [2,5,7,11,6] .indexOf (8) == -1

Проверка, больше ли она -1, на самом деле проверяет, находится ли "randnum" в массиве "arr".

...