Вывод сообщений из списка в произвольном порядке

Вот мой script.js

function nextMsg(i) {
    if (messages.length == i) {
        i = 0;
    }
    $('#message').html(messages[i]).fadeIn(500).delay(12000).fadeOut(500, function() {
        nextMsg(i + 1);
    });
};

var messages = [
    "Сообщение 1",
    "Сообщение 2",
    "Сообщение 3",
    "Сообщение 4",
    "Сообщение 5",
    "Сообщение 6",
];

$('#message').hide();

nextMsg(0);

Вывод на сайте через

<div id="message"></div>

Как мне сделать так, чтобы сообщения выводились при каждой загрузке страницы не по порядку, а всегда в произвольном порядке?


Ответы (1 шт):

Автор решения: Алексей Шиманский

function shuffle(a) {
    for (let i = a.length - 1; i > 0; i--) {
        const j = Math.floor(Math.random() * (i + 1));
        [a[i], a[j]] = [a[j], a[i]];
    }
    return a;
}

let  messages = ["Сообщение 1", "Сообщение 2", "Сообщение 3", "Сообщение 4", "Сообщение 5", "Сообщение 6"];

let shuffledMessages = shuffle(messages);

console.log(shuffledMessages);

Потом из перетасованного массива берёте по порядку данные

→ Ссылка