Есть массив объектов, где каждый объект - это игральная карта, которая выводится на экран при нажатии кнопки. На экране может находится только одна карта. Соответственно, при нажатии кнопки предыдущая удаляется, а новая отрисовывается. Нужно сделать так, чтобы не выводились одинаковые карты до того, пока не были выведены все, а потом очистить данные и выводить их снова.
Как проверить, была ли выведена карта? Сейчас я делаю так:
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;
}
Я понимаю, что у меня явный просчет в логике, но не могу понять, как его исправить.