1
resposta

O sorteio dos números ainda estão duplicando.

Galera, dentro da função listaDeSegredos() tem a verificação se o número já existe dentro do array ou não, porém não consigo achar o erro na lógica, poderiam me ajudar nisso?

<!DOCTYPE html>
<input placeholder="Digite um numero">
<button>verifica</button>
<script>
    var dadosInput = document.querySelector('input');
    var button = document.querySelector('button');

    dadosInput.focus();
    var validador = false;

    button.onclick = verifica    

    var segredos = listaDeSegredos(4);
    segredos.push(geradorDeSegredos());
    console.log(segredos);

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

    //sorteia numeros
    function listaDeSegredos(quantidade) {

        var segredos = [];

        var contador =1; 

        while(contador <= quantidade){
            var numAleatorio = geradorDeSegredos();
            var achou = false;

            if (numAleatorio !==0) {
                for(var i =0; i<segredos.length;i++){
                if (segredos[i] == numAleatorio) {
                    achou =true;
                    break;
                }
            }

                if (achou ==  false) {
                    segredos.push(numAleatorio);
                    contador+=1;
                }
            }


        }    
        return segredos;
    }



    function verifica() {
        for (var i = 0; i < segredos.length; i++){
            validador = false;
            if (segredos[i] == dadosInput.value ) {
                alert("acertou");
                validador = true;
                break;
            }
        } 

        if (validador == false) {
            alert("errou");
        }

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




</script>
1 resposta

Oi Marinaldo

A lógica da sua função listaDeSegredos está correta, o problema está acontecendo depois que você chama ela, antes do console.log.

var segredos = listaDeSegredos(4);
segredos.push(geradorDeSegredos());   // Aqui que está o problema, você está inserindo um número a mais sem passar pela lógica de verificação contida na função listaDeSegredos
console.log(segredos);

Parabéns pelo empenho nos estudos!

Continue praticando e qualquer dúvida pode contar com a gente.