Es frecuente trabajar con arrays en JavaScript, ya que es útil para colecciones sencillas, que no requieran operaciones complejas con ellas. Una de estas operaciones que se puede necesitar en algunos casos, es la de mezclar un array o, en otras palabras, barajar, desordenar un array. En inglés se le suele llamar shuffle a este término.
Hay múltiples formas y algoritmos de desordenar un array. En este caso nos vamos a centrar en el algoritmo Fisher-Yates. En esta implementación, se coge un elemento aleatorio de la lista y se intercambia con el último de la lista. En la siguiente iteración, se repetirá la operación pero sin tener en cuenta el último elemento de la lista, el cual ya es aleatorio. Y así repetidamente, tomando cada vez un elemento menos de la lista, hasta que ya no queden elementos por mover al final.
Usos de desordenar un array
Algunos usos típicos para desordenar un array, podría ser para juegos. Por ejemplo, para barajar una baraja de cartas. También puede interesar mezclar una lista de un reproductor de música, el típico botón shuffle de muchos reproductores que sirve para escuchar las canciones en un orden aleatorio.
Código para mezclar un array en JavaScript
function shuffle(array) { var currentIndex = array.length, temporaryValue, randomIndex; // Mientras queden elementos a mezclar... while (0 !== currentIndex) { // Seleccionar un elemento sin mezclar... randomIndex = Math.floor(Math.random() * currentIndex); currentIndex -= 1; // E intercambiarlo con el elemento actual temporaryValue = array[currentIndex]; array[currentIndex] = array[randomIndex]; array[randomIndex] = temporaryValue; } return array; }
Un ejemplo de uso podría ser el siguiente. Simplemente hay que pasar como parámetro el array javascript a desordenar a la función, la cual devolverá el array de objetos ya mezclado.
var arr = [23, 15, 67, 98, 7]; arr = shuffle(arr); console.log(arr);
theAarray.sort(() => Math.random()-0.5)
De verdad te lo agradezco mucho, todo bien explicado, me sirvió bastante.
Buenos dias yo quiero hacer que de una base de datos arroje cierta cantidad de textos ¿que es lo que tengo que hacer?