Barajar una lista
Problema:
Ordenar al azar
Una lista de elementos se implementa en Javacript como un array, que puedes ordenar fácilmente, pero ¿y si quires desordenarla para que los componentes queden ordenados al azar o sea desordenados?
Solución
Algoritmo Fisher-Yates
Si bien podríamos usar sort con un callback para aleatorizar, el máximo grado de aleatoriedad al ordenar una lsita se consigue con el algoritmo Fisher-Yates, básicamente se basa en intercambar elementos del array al azar, pero todas las combinaciones posibles tiene la misma probabilidad de usarse.
Ejemplo
Empezando por el final vas intercambiando elementos al azar
function shuffleList(list) {
for (let i = list.length - 1; i > 0; i--) {
const j = Math.floor(Math.random() * (i + 1));
[list[i], list[j]] = [list[j], list[i]];
}
}