1
resposta

Onde está o erro? Array repete números mesmo com o código dizendo para não

<meta charset="UTF-8">

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

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

    function sorteiaNumeros(quantidade) {
        let segredos = [];
        let numero = 1;
        while (numero <= quantidade) {

            let numeroAleatorio = sorteia();

            if (numeroAleatorio !== 0) {

                let achou = false;

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

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

        }
        return segredos;
    }

    let segredos = sorteiaNumeros(3);
    console.log(segredos);
    let input = document.querySelector("input");
    input.focus();

    function verifica() {

        let achou = false;

        for (let posicao = 0; posicao < segredos.length; posicao++) {
            if (input.value == segredos[posicao]) {

                alert("Você Acertou, parabéns!");
                achou = true;
                break;
            }
        }
        if (achou == false) {
            alert("Você errou!");
        }

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

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

</script>

Pessoal tudo bom? seguinte... fiz e copiei exatamente como o do instrutor Flavio, e ao apontar o array no console.log, ao recarregar minha página houve momentos que repetiam número na lista, e o código se diz para não ter esse tal acontecimento. PS: tenho certeza que o olho já embaralho de tanta letrinha, mas se puderem me ajudar a encontrar esse bug, agradeceria muito! boa semana....

1 resposta

Julio, está quase tudo certo. O único erro foi dentro da função sorteiaNumeros(quantidade), na linha 25 na declaração dentro do if:

achou == true;

corrigindo:

achou = true;