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

Reabrindo a discurso do lenght

Segue o trecho:

function sorteiaNumeros(quantidade) {

        var segredos = [];

        var numero = 1;

        while(numero <= quantidade) {

              var numeroAleatorio = sorteia();
              var achou = false;

              if (numeroAleatorio !== 0) {
                     for(var posicao = 0; posicao < segredos.length; posicao++) {

                           if(segredos[posicao] == numeroAleatorio){
                                achou = true;
                                break;
                           }

                     }

Digamos que na função sorteia números passei o parâmetro 3 então eu terei 3 números para comparar os valores.

Daí a var numeroAleatório pega um número entre 0 e 10. Se esse número for diferente de zero faço um loop e aí é que não entendi o que o código faz:

1° Parte não entendida:

Na primeira interação do While minha var segredos , até aqui é um array vazio com posição [0]. Daí meu for me diz o seguinte, se a variável posição, que é igual nesse primeiro momento a zero, for menor que a quantidade de elementos da minha variável segredos, que também é zero incremente posição.

2° Parte não entendida:

Segue as dúvidas no próximo trecho de código:

         if(segredos[posicao] == numeroAleatorio){

Aqui nessa primeira volta do While eu comparo a Var numero aleatório, que até aqui vai ter um valor, com minha array segredo na sua primeira posição que está em zero. Espero que tenha sido claro.

2 respostas
solução!

Boa tarde, Anderson! Como vai?

Na primeira interação do While minha var segredos , até aqui é um array vazio com posição [0]. Daí meu for me diz o seguinte, se a variável posição, que é igual nesse primeiro momento a zero, for menor que a quantidade de elementos da minha variável segredos, que também é zero incremente posição.

Na realidade, a variável posicao só será incrementada ao final de cada iteração do for.

Aqui nessa primeira volta do While eu comparo a Var numero aleatório, que até aqui vai ter um valor, com minha array segredo na sua primeira posição que está em zero. Espero que tenha sido claro.

A cada iteração do for esse if vai verificar se o número aleatório gerado e armazenado na variável numeroAleatorio é igual a segredos[posicao]. Em caso positivo, isso significa que o número gerado já foi armazenado no array previamente!

Pegou a ideia? Qualquer coisa é só falar!

Grande abraço e bons estudos, meu aluno!

Entendi que na primeira interação do While o código não entra dentro do for, pois posicao nesse momento não é menor que segredos, e sim igual, sendo assim ele não executa a verificação do número aleatório gerado comparando com segredos na posição zero do arra segredos. Apartir da segunda volta do while a brincadeira começa a funcionar como projetado. Obrigado.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software