Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Não encontro o erro...

Gostaria que o retorno fosse uma lista paralela com 10 números retirados da lista principal.

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 add = listaPrincipal.splice(parseInt(Math.random(0, listaPrincipal.length) * (listaPrincipal.length - 0) + 0), 1);
  listaParalela.push(add);
}
console.log(listaPrincipal);
console.log(listaParalela);
2 respostas
solução!

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 ✓

Ola Vinucius. Muito obrigado pela explicação!