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

Meu array está retornando undefined

Pelo Console vejo que meu array está gerando undefined em vez de números. Já tentei achar erro no código, mas ate agora nada.

<meta charset="utf-8">
<head></head>
<body>

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

    <script>

        function sorteia(){

            Math.round(Math.random() * 10)
        }

        function sorteiaNumeros(quantidade){

            var segredos = [];
            var numero = 1;

            while(numero <= quantidade){

                segredos.push(sorteia());
                numero++; 
            }

            return segredos;

        }

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

        console.log(segredos);

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

        var button = document.querySelector("button");
        button.onclick = verifica;


    </script>

</body>
2 respostas
solução!

Oi, Ruan! Tudo bem?

O que acontece é que você esqueceu de dar um retorno para a função sorteia(). Assim, quando você atribui uma posição na array ao retorno dela (com a linha segredos.push(sorteia());), o que está sendo mandado para a array é undefined. Para resolver isso, basta mudar a sua função sorteia() para retornar o valor calculado:

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

obrigado, vacilei em besteir kkkkk