У вас небольшая проблема с функцией Shuffle Фишера-Йейтса.

Вы забыли инициализировать значение «i» в подпрограмме. Вот исправление, которое также устраняет необходимость в дополнительных переменных с помощью метода уничтожения «своп».

// Изменено с: https://medium.com/javascript-in-plain-english/four-super-useful-techniques-in-vanilla-js-896bab184574
const shuffle = (array) =› {
let currentIndex = array.length;
var i = currentIndex-1;
let tmpValue;
let randomIndex;
while (0 !== currentIndex) {
randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex = i — ;
[ array[currentIndex], array[randomIndex] ] = [ array[randomIndex], array[currentIndex] ];
} возвращаемый массив;
}

//Примеры:
let arr = [1,2,3,4,5,6,7,8,9];
// arr = […arr, …arr, …arr]; // тройной размер для перемешивания

console.log(`Исходный порядок: ${arr}`);
console.log(`1-й случай: ${shuffle(arr)}`); // Пример: [4, 1, 3, 6, 7, 9, 2, 8, 5]
console.log(`2-й случай: ${shuffle(arr)}`); // Пример: [2, 7, 4, 6, 5, 1, 3, 8, 9]
console.log(`3rd shuffle: ${shuffle(arr)}`); // Пример: [4, 1, 3, 6, 7, 9, 2, 8, 5]
console.log(`4th shuffle: ${shuffle(arr)}`); // Пример: [2, 7, 4, 6, 5, 1, 3, 8, 9]
// console.log(`Последний заказ: ${arr}`);
console. бревно();

arr = […’abcdefghijklmnopqurstuvwzy’]; // создать массив из строки
console.log(`Исходный порядок: ${arr}`);
console.log(`1st shuffle: ${shuffle(arr)}`); // Пример: [4, 1, 3, 6, 7, 9, 2, 8, 5]
console.log(`2-й случай: ${shuffle(arr)}`); // Пример: [2, 7, 4, 6, 5, 1, 3, 8, 9]
console.log(`3rd shuffle: ${shuffle(arr)}`); // Пример: [4, 1, 3, 6, 7, 9, 2, 8, 5]
console.log(`4th shuffle: ${shuffle(arr)}`); // Пример: [2, 7, 4, 6, 5, 1, 3, 8, 9]
// console.log(`Последний заказ: ${arr}`);

Я также добавил пример перетасовки по алфавиту только для сравнения.