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

Meu código continua com número repetidos no array.

Pessoal, olhei posts anteriores mas ainda não identifiquei o erro. Consegueme ajudar por favor? Abs

<meta charset="utf-8">

<input type="" name="">
<button>Compare com o meu segredo</button>

<script type="text/javascript">
    //var segredos = [5,7,10,2,3]; //AQUI TEMOS UM Array, uma lista de dados;

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

    function sorteiaNumeros (qntde){
        var x = [];
        var numero = 1
        while(numero <= qntde){
            var numeroAleatorio = sorteia();

            if (numeroAleatorio != 0){

                var achou = false;

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

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

                if (achou == false) {
                    x.push(numeroAleatorio);
                    numero++;
                }
            }
        } //funçao pussh gera numero aleatorio e adiciona na lista (no caso a x)
        return x;
    }
    var segredos = sorteiaNumeros(5);

    console.log(segredos) //me mostra no Console JavaScript do navegador o que tem na variavel ou no array

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

    input.focus();

    var achou = false;
    function verifica() { 

        for(var posicao = 0; posicao<segredos.length; posicao++){ //segredos.length me resulta na qntde de itens que meu vetor tem
            if (input.value == segredos[posicao]){
                alert("Você ACERTOU!");
                achou = true;
                break;
            } 
        }

        if(achou == false){alert("Você errou!!");}

        input.value = ""; //limpei a caixa que tinha um valor imputado por mim
        input.focus(); //foco na minha caixa vazia
    }


    var button = document.querySelector("button"); //chamei o button do html e atribui a uma variável
    button.onclick = verifica;

</script>
2 respostas
solução!

Fala Matheus!

Tinha um pequeno erro no seu código. Esse deu trabalho para descobrir, pois o console não identificou nenhum erro e por isso nem fiz uma checagem de erro de código de início.

Tem um ; que não deveria estar la:

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

Corrigido:

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

Tive q ir validando pedaço por pedaço. O que te ajuda bastante para fazer as verificações qnd tiver problema, é adicionar um console.log em cada etapa salvar e testar, podendo ser por exemplo um console.log("entrou"); para saber se em algum momento o código ta entrando naquela parte, ai da pra saber se tem algo errado até ali ou vc pode dar um console.log(); com as variáveis, para saber se naquele local ele ta acessando a variável especifica e se ta td ok. Foi através desse método que descobri o problema. Faz um teste ai antes de corrigir o problema. Tenta botar um console.log dentro do for, na primeira linha:

for(var posicao = 0; posicao < x.length; posicao++); {
    console.log(x[posicao]);
    if(x[posicao] == numeroAleatorio){

Você vai perceber que ele sempre dará undefined, então por isso estava dando problema, ai o código nunca entrava no if em seguida, que era exatamente onde vc identificava o numero igual.

Código completo corrigido:

<meta charset="utf-8">

<input type="" name="">
<button>Compare com o meu segredo</button>

<script type="text/javascript">
    //var segredos = [5,7,10,2,3]; //AQUI TEMOS UM Array, uma lista de dados;

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

    function sorteiaNumeros (qntde){
        var x = [];
        var numero = 1
        while(numero <= qntde){
            var numeroAleatorio = sorteia();

            if (numeroAleatorio != 0){

                var achou = false;

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

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

                if (achou == false) {
                    x.push(numeroAleatorio);
                    numero++;
                }
            }
        } //funçao pussh gera numero aleatorio e adiciona na lista (no caso a x)
        return x;
    }
    var segredos = sorteiaNumeros(5);

    console.log(segredos) //me mostra no Console JavaScript do navegador o que tem na variavel ou no array

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

    input.focus();

    var achou = false;
    function verifica() { 

        for(var posicao = 0; posicao<segredos.length; posicao++){ //segredos.length me resulta na qntde de itens que meu vetor tem
            if (input.value == segredos[posicao]){
                alert("Você ACERTOU!");
                achou = true;
                break;
            } 
        }

        if(achou == false){alert("Você errou!!");}

        input.value = ""; //limpei a caixa que tinha um valor imputado por mim
        input.focus(); //foco na minha caixa vazia
    }


    var button = document.querySelector("button"); //chamei o button do html e atribui a uma variável
    button.onclick = verifica;

</script>

Nossa Renan, muito obrigado pela ajuda, ficou bem mais claro! A gente que não está acostumado acaba cometendo esses erros pequenos, te agradeço cara!