JS: Random int com base no comprimento da matriz

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 🙂