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

Looping infinito

Estou com um problema (e deve ser algo muito simples) no meu código, pois dá a impressão que entra em um loopig infinito.

Poderiam me ajudar?

<meta charset="utf-8">

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

<script type="text/javascript">

    var segredos = sorteiaNumeros(3);

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

    function sorteiaNumeros(quantidade){
        var segredos = [];
        var i = 1;

        while(i<=quantidade){
            var numeroAleatorio = sorteia();

            if(numeroAleatorio!==0){
                var achou = false;
                for (var posicao = 0; posicao <= segredos.length; i++) {
                    if (segredos[posicao]==numeroAleatorio) {
                        achou=true;
                        break;
                    }
                }
            }

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

        console.log(segredos);
        return segredos;
    }

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

    function verifica(){
        alert("Entrou no Verifica");
        var achou = false;
        for (var i = 0; i < segredos.length; i++) {
            //alert("Entrou no FOR i= " + i + " segredos = " + segredos[i]);
            if(input.value==segredos[i]){
                alert("VOCÊ ACERTOU");
                achou = true;
                break;
            }

        }

        if(achou==false){
            alert("VOCÊ ERROU");
        }

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

    button.onclick = verifica;
</script>
3 respostas
solução!

Oi Renan, tudo bem? Acho que o problema é no segundo laço na função verifica, em um loop você usa i como contador, e no segundo, posicao, mas não incrementa posicao. Veja a linha:

var posicao = 0; posicao <= segredos.length; i++

Deveria ser assim, não?

var posicao = 0; posicao <= segredos.length; posicao++

Conseguiu com a dica do Wanderson?

Muitissimo Obrigado pessoal! =)