Задать вопрос
@Lexshpin

Функция рандомайзер для вывода элементов на экран. Как реализовать?

Есть массив объектов, где каждый объект - это игральная карта, которая выводится на экран при нажатии кнопки. На экране может находится только одна карта. Соответственно, при нажатии кнопки предыдущая удаляется, а новая отрисовывается. Нужно сделать так, чтобы не выводились одинаковые карты до того, пока не были выведены все, а потом очистить данные и выводить их снова.

Как проверить, была ли выведена карта? Сейчас я делаю так:
createNewCard(cards[chooseCard()]);
где createNewCard отрисововывает карту и кидает в нее случайное число из chooseCard:
function chooseCard() {
  let cardNum = Math.floor(Math.random() * cards.length);

  return cardNum;
}


Была идея пушить cardNum в массив и проверять, есть ли число в массиве, и если его нет, то возвращать ее, а если есть, то рандомить заново:
function chooseCard() {
  let cardNum = Math.floor(Math.random() * cards.length);
let shownCards = [];
  for (key of shownCards) {
    if (key !== cardNum) {
      shownCards.push(cardNum);
    } else {
      cardNum = Math.floor(Math.random() * cards.length);
    }

  return cardNum;
}


Я понимаю, что у меня явный просчет в логике, но не могу понять, как его исправить.
  • Вопрос задан
  • 212 просмотров
Подписаться 1 Средний 1 комментарий
Пригласить эксперта
Ваш ответ на вопрос

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

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