Olá, Ricardo. Tudo bem?
Segundo o que você disse:
"Gostaria que o retorno fosse uma lista paralela com 10 números retirados da lista principal."
Eu consegui realizar uma implamentação da seguinte maneira:
var listaPrincipal = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10 ,11 ,12 ,13 ,14 ,15 ,16 ,17 ,18 ,19 ,20 ,21 ,22 ,23 ,24 ,25];
var listaParalela = [];
while (listaParalela.length < 10)
{
var itemAleatorio = Math.floor(Math.random() * listaPrincipal.length);
listaParalela.push(listaPrincipal[itemAleatorio]);
}
console.log(listaPrincipal);
console.log(listaParalela);
Como você gostaria de pegar um número aleatório da listaPrincipal
, precisamos nos atentar a expressão abaixo:
Math.floor(Math.random() * listaPrincipal.length);
- A função
Math.random
retorna um número com casas decimais entre 0 e 1, ex: 0.8531600754089665, dessa forma, para sortear um ítem da listaPrincipal
é necessário realizar uma multiplicação entre 0.8531600754089665 e 25 que é o tamanho da listaPrincipal.
Logo, 0.8531600754089665 * 25
= 21.329001885224162
.
Veja que este número está com casas decimais, para resolver isso usamos a função Math.floor
que arredonda um número PARA BAIXO para o inteiro mais próximo. Logo, será o número selecionado é 21
.
Ou seja, selecionamos a posição 21 da sua lista, que podemos acessar da seguinte maneira:
listaPrincipal[itemAleatorio]
O retorno disso será o valor 22 que ocupa a posição 21, pois em listas começamos a contar do 0.
Por fim, para adicionar este valor a nova lista usamos:
listaParalela.push(listaPrincipal[itemAleatorio]);
Acredito que dessa forma resolva esse problema, espero ter ajudado :)
Qualquer dúvida estou à disposição, bons estudos :)
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓