Array.prototype.slice
возвращает массив:
var selected = shuffle(arr).slice(0, 1)
Здесь selected
теперь массив с одним элементом. Но объекты никогда не являются ===
для чего-либо, кроме самих себя, и поскольку indexOf
использует ===
для определения признаков, он всегда будет возвращать -1.
Вместо этого извлекать первое значение из перетасованного массива:
var selected = shuffle(arr)[0]
const shuffle = arr => {
let a = arr.slice(0); // take a copy
for (let i = a.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[a[i], a[j]] = [a[j], a[i]];
}
return a;
};
var arr = [];
var UserNumber = 10;
var BallNumber = 4;
var RandomNumber = Math.floor(Math.random() * UserNumber) + 1;
while (arr.length < BallNumber) {
var r = Math.floor(Math.random() * UserNumber) + 1;
if (arr.indexOf(r) === -1) {
arr.push(r);
}
}
var selected = shuffle(arr).slice(0, 1)[0];
document.write("<p> The random Number to choose is " + selected + "</p>");
document.write("<p> The Random Numbers are " + arr + "</p>");
document.write("<p> The position is " + arr.indexOf(selected) + "</p>");