1
resposta

Dúvida quando segredos[posicao] é igual ao numeroAleatorio

Por exemplo, se segredos[posicao] for igual ao numeroAleatorio na segunda vez que percorrer o laço a variavel achou vai ser igual a true.

Fiquei confuso nessa parte, pois só terá validado dois números e vai sair do laço com o break para não colocar numero repedido, quando chegar no if achou == false, ele vai ser verdadeiro, logo não vai mais voltar para o laço com o numero++

Me ajudem a entender isso, por favor.

<meta charset="UTF-8">

<input/>
<button>Compare com o meu segredo</button>

<script>
    function sorteia() {

       return Math.round(Math.random() * 10);

    }

    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;
                           }

                     }

                     if (achou == false) {
                           segredos.push(numeroAleatorio);
                           numero++;
                     }
              }

        }

        return segredos;

    }

    var segredos = sorteiaNumeros(5);

    console.log(segredos);

    var input = document.querySelector("input");
    input.focus();

    function verifica() {

       var achou = false;

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

              if(input.value == segredos[posicao]) {

                     alert("Você ACERTOU!");
                     achou = true;
                     break;
              } 
       }

       if(achou == false) {

              alert("Você ERROU!");
       }

       input.value = "";
       input.focus();

    }

    var button = document.querySelector("button");

    button.onclick = verifica;

</script>
1 resposta

Fala, Thiago! Tudo bem contigo?

Desculpe a demora em dar um retorno!

Quando inserimos o parâmetro (5) ao chamar a função, esse valor será o limite do de números sorteados

var segredos = sorteiaNumeros(5);

Quando ele entrar dentro dessa função, o contator já iniciará com 1 e chamará o sorteio.

A primeira restrição que encontrará é que se o número for diferente de zero "pode passar"

Agora, vamos aos if's

Se o número que veio do sorteio da rodada já constar na "array" de segredos (var segredos = []), ele gera o break, vai sair desse if e ao sair ele vai encontrar outro if, mas a variável "achou" está valendo "true", logo, volta p/ cima e verifica se o numero ainda é menor ou igual a quantidade.

Caso não, ele vai entrar dentro do primeiro if e dependendo dos valores inseridos no "array" ele permanecerá, mas na primeira vez ele sairá com o primeiro número não repetido e seguirá para o segundo ifutilizando o push para inserir esse número dentro da array.

Quando chegar ao valor de quantidades, ele vai sair do while e concluirá o sorteio

Caso não tenha ficado claro, nos dê um retorno!!!

Espero ter ajudado, Thiago!

Um abraço e bons estudos!!!