Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Meu codigo não tira os numeros repetidos

Eu não estou conseguindo retirar os numeros repetidos da array, esta sendo adicionado um numero a mais eu assisti a aula algumas vezes e mesmo assim não entendi bem onde estou errando

<meta charset="utf-8">

<input/>
<button>veja se esta correto</button>

<script>



    //variaveis onde ficam os valores e sorteio dos numeros


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



    function sorteia(){ return Math.round(Math.random()*10)};

    var numero=4

      var segredo = [];

      var achou=false

      while(segredo.length<numero){segredo.push(sorteia());


      for(var posição=0;posição<segredo.length;posição++){

          if(segredo[posição]==sorteia()){achou=true;}}

     if(achou==false){segredo.push(sorteia());posição++}        


                                          };



      console.log(segredo);


    //


    function verifica () {     var achou=false;    

        input.focus;

         for(var posição=0; posição < segredo.length ; posição++){

            if(input.value ==segredo[posição]){alert("você acertou");var achou=true;input.value="";break}


        }
        if(achou==false){alert("você errou");input.value="";input.focus}};





        //botão
        var button = document.querySelector("button")
        button.onclick = verifica;








</script>
1 resposta
solução!

Você está chamando sorteia() várias vezes (e a cada chamada provavelmente vem um número diferente). O certo é chamar só uma vez e guardar o valor.

    while (segredo.length < numero) {
        var aleatorio = sorteia(); // aqui estava adicionando a mais no array
        achou = false; // faltou essa instrução
        for (var posição = 0; posição < segredo.length; posição++) {
            if (segredo[posição] == aleatorio) {
                achou = true;
                break;
            }
        }
        if (achou == false) {
            segredo.push(aleatorio);
        }
    };

Faltou parênteses neste trecho (na função verifica)

input.focus;