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

Manipulando Arrays: Meu código está IDÊNTICO, mas ainda zeros e números repetidos ainda persistem

Fiz o código ao mesmo passo em que assistia as aulas, e fiz tudo idêntico ao professor, mas os elementos ainda se repetem durante a execução (acompanho pelo log do console). Zeros também surgem. Segue o código:

<meta charset="UTF-8">

<input/>
<button>Compare os números</button>

<script>

    function sorteio() { //função sorteio não recebe parâmetro
        return Math.round(Math.random()*10); //gerador de numeros aleatórios

    }
    function sorteiaNumeros(quantidade) {

        var numeros = [];
        var numero = 1; //primeiro elemento da lista
        while(numero <= quantidade) {
            var numeroAleatorio = sorteio(); //só pode chamar o comando push se o número chutado não foi encontrado na lista

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

                    if(numero[posicao] == numeroAleatorio) {
                        achou = true;
                        break;
                    }
                }
            }    
            if(achou == false) {
                numeros.push(numeroAleatorio);
                numero++;

            }
        }

        return numeros;
    }
    var numeros = sorteiaNumeros(8); //o numero dentro de sorteiaNumeros vai determinar a quantidade de elementos a serem gerados
    console.log(numeros);
    var comparar = document.querySelector("input");
    comparar.focus();

    function verificar() {
        var achou = false;
        for(var posicao = 0; posicao < numeros.length; posicao++){
            if (comparar.value == numeros[posicao]) {
                alert("Você ACERTOU!");
                achou = true;
                break;
            }
        }
        if(achou == false) {
            alert("Você ERROU!");
        }
        comparar.value = "";
        comparar.focus();
    }
    var button = document.querySelector("button");
    button.onclick = verificar;
</script>
2 respostas
solução!

Bom dia meu amigo, tudo bem? Segue teu código, fiz o comentário na linha 22 até a linha 24 com o erro que estava acontecendo

<meta charset="UTF-8">

<input />
<button>Compare os números</button>

<script>

    function sorteio() { //função sorteio não recebe parâmetro
        return Math.round(Math.random() * 10); //gerador de numeros aleatórios
    }

    function sorteiaNumeros(quantidade) {

        var numeros = [];
        var numero = 1; //primeiro elemento da lista

        while (numero <= quantidade) {
            var numeroAleatorio = sorteio();
            var achou = false; //só pode chamar o comando push se o número chutado não foi encontrado na lista

            if (numeroAleatorio !== 0) {
                // var achou = false;  FICA DENTRO DO WHILE @@@@@@@@@@@@
                //VocÊ estava usando "numero.length" - voce precisava buscar
                // o tamanho do array que possui o nome "numeros"
                for (var posicao = 0; posicao < numeros.length; posicao++) {

                    if (numeros[posicao] == numeroAleatorio) {
                        achou = true;
                        break;
                    }
                }
                if (achou == false) {
                    numeros.push(numeroAleatorio);
                    numero++;
                }


            }
        }

        return numeros;
    }
    var numeros = sorteiaNumeros(5); //o numero dentro de sorteiaNumeros vai determinar a quantidade de elementos a serem gerados
    console.log(numeros);
    var comparar = document.querySelector("input");
    comparar.focus();

    function verificar() {
        var achou = false;
        for (var posicao = 0; posicao < numeros.length; posicao++) {
            if (comparar.value == numeros[posicao]) {
                alert("Você ACERTOU!");
                achou = true;
                break;
            }
        }
        if (achou == false) {
            alert("Você ERROU!");
        }
        comparar.value = "";
        comparar.focus();
    }
    var button = document.querySelector("button");
    button.onclick = verificar;
</script>

Nossa, muito obrigado! Era um detalhe do detalhe. Acho que usar "numero" e "numeros" para representar uma variável e um array não ajudou muito.