Метод splice не успевает (js)
Вот разметка
<button style="width: 50px; height: 50px;"></button>
А вот сам скрипт
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var array = ['один', 'два', 'три', 'четыре', 'пять', 'шесть', 'семь', 'восемь', 'девять', 'десять', 'одиннадцать', 'двенадцать'];
var btn = document.getElementsByTagName('button')[0];
btn.onclick = function(){
var random = getRandomInt(0, array.length);
console.log(array[random]);
array.splice(random, 1);
}
Периодически выводится значение undefined. Я не могу понять почему это происходит. Скажите пожалуйста в чем проблема и как ее решить
Ответы (1 шт):
Автор решения: Zhihar
→ Ссылка
вот ваша функция
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
давайте посмотрим, что происходит с массивом из 10 элементов -
вы вызываете так:
getRandomInt(0, 10)
и значит будет возвращено:
Math.random() * (10 - 0 + 1)) + 0 = 11 * Math.random()
Допустим Math.random() сгенерирует 0,999, в результате получится 10 и вы обращаетесь к 10 элементу, но в массиве из 10 элементов лишь 0..9 индексы
Так что формула по хорошему должна быть все таки
return Math.floor(Math.random() * (max - min)) + min;