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

O console diz que meu array está vazio

estou fazendo o curso de lógica da programação e tive um pouco de dificuldade com o exercício. quando consulto o console, diz que minha array está vazia, mas, segundo o vídeo do prof Flavio, não deveria ser esse o resultado. eu já vi e revi o código, mas não consegui descobrir o que fiz de errado.

<meta charset="UTF-8">

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

<script>

    function sorteia () {

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

    function sorteiaNumeros (quantidade) {

        var segredos = [];

        var numero = 1;

        while (numero <= quantidade) {

            var numeroAleatorio = sorteia ();
            var achou = false;

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

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

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


            return segredos;
        }


    }

    var segredos = sorteiaNumeros(5);
    console.log (segredos);

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

    function verfica () {

        var achou = false;

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

                if (input.value == segredos[posicao]) {
                    alert ("Voce acertou!");
                    achou = true;
                    break;
                }

            }

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

            if (achou == false) {
                alert("Voce errou")
            }


    }


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

    button.onclick = verfica;

</script>

obrigada!

2 respostas
solução!

Boa tarde, Marina! Como vai?

O seu array está ficando vazio pois a sua função sorteiaNumeros() está incorreta. O certo seria fazer assim:

function sorteiaNumeros(quantidade) {

        var segredos = [];

        var numero = 1;

        while(numero <= quantidade) {

              var numeroAleatorio = sorteia();
              var achou = false;

              if (numeroAleatorio !== 0) {
                     for(var posicao = 0; posicao < segredos.length; posicao++) {

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

                     }

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

        }

        return segredos;

}

Veja que há algumas diferenças como por exemplo o if que envolve a instrução for e o fato da instrução return segredos estar posicionada fora do laço while.

Faça as correções na sua função e verifique se o seu código funciona como esperado. Caso ainda persista algum problema é só falar aqui que eu continuo te ajudando!

Grande abraço e bons estudos, minha aluna!

Oi Marina ainda tá tendo alguma dificuldade com o exercício ou já foi solucionado ?