Função que ordena arrays Randomicamente em JavaScript, como o shuffle() do PHP

publicado em 05 de Novembro de 2008

Este post foi atualizado, pois eu encontrei que existem diversos algoritmos para esta função chamado shuffle()

De qualquer maneira, ainda acredito que este seja o melhor e menor algoritmo.

Então, se quiserem, o melhor nome para esta função é shuffle() Pois no php, existe esta função nativa e funciona da mesma maneira!

Procurei algo como random() ou array_rand() que fosse nativa do JavaScript, porém não encontrei. Mas, econtrei uma função interessante, que funciona muito bem:

function randOrd() {
    return (Math.round(Math.random())-0.5);
}

Caso tenhamos um array como no modelo:

var nome = Array();
nome[0] = "Carlos";
nome[1] = "João";
nome[2] = "Leo";
nome[3] = "Maria";
nome[4] = "Silvia";

Perceba que os valores de nosso array está em ordem alfabética. Utilizamos então a função randOrd() em nosso array:

nome.sort(randOrd);

Ao imprimir os array, eles estarão desordenados.


Uma maneira de exibí-los é utilizando um for:

totalNomes = nome.sizeOf;
for (i=0; i<totalnomes ; i++) {
    document.write('\ Este é o array['+i+']: ' + nome[i]);
}

Este exemplo poderá mostrar:

Este é o array[0]: Maria
Este é o array[1]: João
Este é o array[2]: Leo
Este é o array[3]: Carlos
Este é o array[4]: Silvia