@SixtyNice
Начинающий разработчик

Как получить случайный элемент массива без повторений при вызове функции?

Добрый вечер, есть функция, в которой есть массив объектов и при ее вызове он возвращает случайный элемент массива. Получения случайного элемента я реализовал, но не знаю как сделать, чтобы при ее следующем вызове выводился элемент массива, но не повторялся, потому что каждый раз функция ссылается снова на первоначальный массив(на чистом js).

Вот код
https://github.com/SixtyNice/Black-Jack/blob/maste...
  • Вопрос задан
  • 1163 просмотра
Решения вопроса 1
bingo347
@bingo347 Куратор тега JavaScript
Crazy on performance...
function makeGetRandomElement(initialArray) {
  var arr;
  function randomIndex() {
    return Math.floor(Math.random() * arr.length);
  }
  function reinitArray() {
    arr = initialArray.slice();
  }
  reinitArray();
  return function getRandomElement() {
    if(arr.length === 0) reinitArray();
    return arr.splice(randomIndex(), 1)[0];
  }
}


// использование
var getRandomElement = makeGetRandomElement([1, 2, 3, 4, 5, 6, 7]);
console.log(getRandomElement());
console.log(getRandomElement());
console.log(getRandomElement());
console.log(getRandomElement());
console.log(getRandomElement());
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы