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

Dúvida sobre tirar repetições

Boa noite! Tudo bem?? Espero que sim!!

Não ficou muito claro pra mim essa maneira de tirar os números repetidos... Como posso interpretar melhor o que acontece no código?? Agradeço desde já!

4 respostas

Sempre que quiser mostrar o seu código no fórum, clique na opção "Inserir Bloco de Código" que está acima do bloco de texto, ou use as teclas "Ctrl+Alt+C" todas ao mesmo tempo.

Opa esqueci de colocar, desculpa!

Os códigos foram esses:

<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(3);

    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>

Esse jeito de não deixar com que repetições aconteçam ficou um pouco confuso pra mim...

Agradeço desde já!

solução!
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++;
                     }
              }

        }

Aqui, nessa parte, achou = falso, beleza, enquanto for falso quer dizer que não tem números iguais, mas quando segredos = numero aleatório, ou seja, já teve aquele número sorteado, ele pára a ação e a elimina com o break. Acho que a dificuldade aí é porquê está como segredos [posicao] == numero aleatorio, aí fica difícil de ler mesmo.

Espero ter ajudado, abraços.

Ajudou sim! Obrigado!