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]];

}

}