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

Array dando undefined..

Tentei aplicar o que aprendi no jogo de adivinhação mas o array está dando undefined. Alguém poderia me ajudar a encontrar meu erro?

<meta charset="UTF-8">

<input/>
<button>Compare com o número que estou pensando!</button>

<script>
    function sorteia(){
        return Math.round(Math.random() * 10);
    }
    function numeroSegredos(numero){
        numerosAleatorios = sorteia();
        var segredos = []
        var existe = false
        var numero = 1

        while(1 < segredos.length){
            for(var posicao = 1; posicao < segredos.length; posicao){
                if(segredos[posicao] == numerosAleatorios){
                    existe = true;
                    break;
                }
            }
            if(existe == false){
                segredos.push(sorteia())
                posicao++
            }
        return segredos
        }
    }
     var segredos = numeroSegredos(4);
    var input = document.querySelector("input");

    function verifica() {

        if(segredos == input.value) {
            alert("Parabéns! Você acertou o número secreto");
        }
        else {
            alert("Infelizmente você errou!");
        }
    }
    console.log(segredos)
    var button = document.querySelector("button");
    button.onclick = verifica;
</script>
3 respostas

Realizei algumas modificações aqui e agora o programa funciona, mas quando você recarrega a pagina algumas vezes ele trava.

<meta charset="UTF-8">

<input/>
<button>Compare com o número que estou pensando!</button>

<script>
    function sorteia(){
        return Math.round(Math.random() * 10);
    }
    function numeroSegredos(quantidade){
        var segredos = []
        var existe = false
        var numero = 1

        while(numero <= quantidade){
            var numerosAleatorios = sorteia();

            for(var posicao = 1; posicao < segredos.length; posicao++){
                if(segredos[posicao] == numerosAleatorios){
                    existe = true;
                    break;
                }
            }
            if(existe == false){
                segredos.push(numerosAleatorios)
                numero++
            }
        }
        return segredos
    }
     var segredos = numeroSegredos(4);
    var input = document.querySelector("input");

    function verifica() {

        if(segredos == input.value) {
            alert("Parabéns! Você acertou o número secreto");
        }
        else {
            alert("Infelizmente você errou!");
        }
    }
    console.log(segredos)
    var button = document.querySelector("button");
    button.onclick = verifica;
</script>

Boa tarde!

Pelo que notei, ali na function numeroSegredos, após você declarar o array segredos, você não está atribuindo nenhum valor para ele (somente atribuiu mais pra frente em: segredos.push(sorteia())).

Por isto, quando você tenta dentro da iteração deste array validar neste if:

if(segredos[posicao] == numerosAleatorios){

ele te retorna undefined. Veja o exemplo que fiz no console do browser:


>>var segredos
<undefined
>>segredos
<undefined
>>segredos.push(1)
<1
>>segredos[0]
<1
>segredos[1]
<undefined

Espero ter ajudado ;)

Abs!

solução!

Obrigado Felipe! Depois que postei aqui e fui revisar eu percebi esse erro hahahahaha. Mas mesmo assim ajudou.