#javascript #arrays #random
#javascript #массивы #Случайный
Вопрос:
Я работаю над рандомизацией отзывов / testomonials на веб-сайте, над которым я работаю. Я использую JS для рандомизации testomonials, которые находятся на странице индекса при загрузке. В моем коде я использую массив для хранения testomonials, а затем, когда страница загружается, я хочу, чтобы она просто случайным образом выбирала 3 отзыва из массива и записывала их в «отзыв-1», «отзыв-2» и «отзыв-3» соответственно.
Проблема, с которой я сталкиваюсь в своем коде, заключается в том, что idk — лучший способ выбрать 3 разных отзыва, не повторяя один и тот же дважды.
var reviews = [
"Thank you Anne for fitting me in yesterday when you realised I was desperate to get the house cleaned before the blinds and curtains were fitted. Marie and Michaela did a great job, leaving it sparkling clean. I will certainly recommend you to anyone who needs a cleaner. That you are so approachable, helpful and friendly is a bonus. - <strong>Rosemary OBoyle</strong>",
"Great job on all the awkward hate to do Jobs! Came home from my holidays and my house was sparkling, highly recommended!! - <strong>Lynne Gardiner</strong>",
"Domestic Angels are angels to me, just left lovely Kelly cleaning my house in preparation for mums arrival, while I chill at hairdressers, thank you to Anne amp; her team, can't recommend them enough - <strong>Julie Magee</strong>"
]
var max = reviews.length;
var id1;
var id2;
var id3;
function getRandomReview(max) {
id1 = Math.floor(Math.random() * Math.floor(max));
id2 = Math.floor(Math.random() * Math.Floor(max));
id3 = Math.floor(Math.random() * Math.Floor(max));
}
function randomJS() {
getRandomReview(max);
document.getElementById("review-1").innerHTML = id1;
document.getElementById("review-2").innerHTML = id2;
document.getElementById("review-3").innerHTML = id3;
}
Будем признательны за любые советы и помощь. Заранее спасибо
Комментарии:
1. вы можете перетасовать свой массив, а затем использовать порядок, полученный из перетасованного массива, в качестве порядка отображения отзывов
2. Возможно ли, что у вас будет более 3 отзывов?
Ответ №1:
Спасибо!
Просто перетасовал его, и он работает! 🙂
var reviews = [
"Thank you Anne for fitting me in yesterday when you realised I was desperate to get the house cleaned before the blinds and curtains were fitted. Marie and Michaela did a great job, leaving it sparkling clean. I will certainly recommend you to anyone who needs a cleaner. That you are so approachable, helpful and friendly is a bonus. - <strong>Rosemary OBoyle</strong>",
"Great job on all the awkward hate to do Jobs! Came home from my holidays and my house was sparkling, highly recommended!! - <strong>Lynne Gardiner</strong>",
"Domestic Angels are angels to me, just left lovely Kelly cleaning my house in preparation for mums arrival, while I chill at hairdressers, thank you to Anne amp; her team, can't recommend them enough - <strong>Julie Magee</strong>",
]
var max = reviews.length;
var id1;
var id2;
var id3;
function shuffle(reviews) {
reviews.sort(() => Math.random() - 0.5);
}
function randomJS() {
shuffle(reviews);
document.getElementById("review-1").innerHTML = reviews[0];
document.getElementById("review-2").innerHTML = reviews[1];
document.getElementById("review-3").innerHTML = reviews[2];
}
Комментарии:
1. Просто предупреждение, что метод shuffle, как известно, не очень случайный. Если вам нужно больше случайности, взгляните на алгоритм случайной перетасовки Фишера-Йейтса для получения хорошего алгоритма случайной перетасовки.