Уникальный сгенерированное число Math.random для одинаковых классов
Я хочу сгенерировать уникальное число для каждого повторяющегося класса. Голова не работает, прошу помочь найти решение.
Есть вот что
<div class="vertical__date"></div>
<div class="vertical__date"></div>
<div class="vertical__date"></div>
<div class="vertical__date"></div>
<script>
function getRandomCalendar(min, max) {
return Math.floor(Math.random() * (max - min)) + min;
}
var daysCalendar = getRandomCalendar(1, 24);
</script>
<script>
function declOfNum(number, titles) {
cases = [2, 0, 1, 1, 1, 2];
return titles[ (number%100>4 && number%100<20)? 2 : cases[(number%10<5)?number%10:5] ];
}
$('.vertical__date').html(daysCalendar +declOfNum(daysCalendar, [' час', ' часа', ' часов']) + ' назад');
</script>
Ответы (1 шт):
Автор решения: Pavel Nazarian
→ Ссылка
document.querySelector('button').onclick = fillDiv;
function fillDiv(){
document.querySelectorAll('.vertical__date').forEach(el => {
const number = getRandomNumber(1,7);
el.textContent = number;
})
}
function getRandomNumber(min,max){
const numbers = [...document.querySelectorAll('.vertical__date')].map(el => +el.textContent || 0);
let random_number = Math.floor(Math.random() * (max - min)) + min;
return !numbers.includes(random_number) ? random_number : getRandomNumber(min,max);
}
<div class="vertical__date"></div>
<div class="vertical__date"></div>
<div class="vertical__date"></div>
<div class="vertical__date"></div>
<button> Вжух </button>