Aqui está um modelo que mantenho à mão sempre que preciso retornar algo aleatório de um array.
function randomize (yourArray) {
randint = Math.floor(Math.random() * yourArray.length);
return randint;
};
Digamos que você esteja escrevendo um aplicativo que exibe cotações aleatórias para o usuário, como eu faço aqui neste aplicativo: http://goo.gl/6zNAF (repositório GitHub). Se suas aspas estiverem todas contidas em um array, você desejará uma maneira simples e confiável de acessar esse array sem acabar com erros de “índice fora do intervalo”. A melhor maneira é usar o atributo array.length diretamente.
Na função acima, consideramos nosso array como um argumento. Envolvemos Math.random () * array.length dentro de Math.floor () porque onde random () arredonda para cima ou para baixo para o número mais próximo, floor sempre arredondará de volta para um número inteiro que é o que garante que nós ‘ nunca está fora de nossa faixa de índice. O número resultante é um inteiro e agora pode ser usado como um índice em nossa pesquisa.
Existem duas maneiras simples de usar isso:
var randint = randomize(quotes);
var quote = quotes[randint];
console.log(quote);
ou:
var quote = quotes[randomize(quotes)];
console.log(quote);
Prefiro o segundo porque tem menos linhas para ler sem sacrificar a legibilidade. O bom dessa função é que, embora seja muito simples, todo mundo tem um “peido cerebral” em algum momento, especialmente quando se trabalha com vários idiomas ao mesmo tempo. Eu pessoalmente alterno entre JavaScript / jQuery, Python e C no que parece ser por minuto todos os dias. Ter uma pequena função de entrada rápida como essa é apenas uma coisa a menos que você deve tentar e lembrar ao examinar a documentação e alternar entre bibliotecas em diferentes linguagens.
Aproveitar 🙂