Вот несколько методов, которые можно использовать для перетасовки массива в TypeScript:
Метод 1: использование алгоритма перемешивания Фишера-Йейтса (Кнута)
function shuffleArray(array: any[]): any[] {
const shuffledArray = [...array];
let currentIndex = array.length;
while (currentIndex !== 0) {
const randomIndex = Math.floor(Math.random() * currentIndex);
currentIndex--;
[shuffledArray[currentIndex], shuffledArray[randomIndex]] = [
shuffledArray[randomIndex],
shuffledArray[currentIndex],
];
}
return shuffledArray;
}
Метод 2: использование метода Array.sort() с функцией случайного сравнения
function shuffleArray(array: any[]): any[] {
const shuffledArray = [...array];
return shuffledArray.sort(() => Math.random() - 0.5);
}
Метод 3. Использование библиотеки lodash (требуется установка)
import * as _ from 'lodash';
const shuffledArray = _.shuffle(array);
Метод 4. Использование алгоритма перетасовки Дюрстенфельда
function shuffleArray(array: any[]): any[] {
const shuffledArray = [...array];
for (let i = array.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[shuffledArray[i], shuffledArray[j]] = [shuffledArray[j], shuffledArray[i]];
}
return shuffledArray;
}