¿Cómo mezclar (barajar) correctamente los elementos de un array en JavaScript?
¡Hola a todos! Soy nuevo en JavaScript y me encontré con esta tarea: necesito mezclar los elementos de un array en orden aleatorio. Por ejemplo, tengo un array con cartas para un juego:
```javascript
const cards = ['2', '3', '4', '5', '6', '7', '8', '9', '10', 'J', 'Q', 'K', 'A'];
```
Quiero que después de mezclar, el orden de los elementos sea aleatorio. Intenté usar `Math.random()` junto con `sort()`, así:
```javascript
cards.sort(() => Math.random() - 0.5);
```
Parece que funciona, pero leí que este enfoque es incorrecto porque la distribución no será uniforme. Además, algunos elementos pueden permanecer en sus lugares con más frecuencia que otros. ¿Podrían indicarme cómo implementar correctamente el barajado de Fisher-Yates (o cualquier otro algoritmo correcto) en JavaScript puro? Es importante que la función sea universal y funcione con cualquier array, no solo con números. ¡Gracias de antemano por la ayuda!
<<>>
Mejor respuesta: algoritmo de Fisher-Yates (Knuth)
Tiene toda la razón: es