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

Por que o array está aumentando?

Não consegui descobrir porque a quantidade que informo na função "sorteiaNumeros" está sendo acrescida em 1 unidade. Eu informo 4 e o array "segredos" aparece com 5 números.

<script>

    function sorteia() {

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

    function sorteiaNumeros(quantidade) {

        var segredos = [];
        var numero = 1;

        while(numero <= quantidade) {

            var numeroAleatorio = sorteia();

            if(numeroAleatorio !== 0) {

                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(4);
    segredos.push(Math.round(Math.random() * 10));

    console.log(segredos);

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

    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 button = document.querySelector("button");
    button.onclick = verifica;

</script>
3 respostas
solução!

Bom dia Guilherme, tudo certo?

Isso está acontecendo porque você está adicionando mais 1 valor na última posição do array segredos ao usar o push() nessa linha:

segredos.push(Math.round(Math.random() * 10));

Se você comentar essa linha para testar, vai ver que o array volta com as posições corretas no retorno da função sorteiaNumeros().

Guilherme Silva,

é isso mesmo o que o Guilherme Almeida comentou.

Até esta linha:

var segredos = sorteiaNumeros(4);

o código insere 4 números sorteados e diferentes entre si.

Mas você acrescentou na linha seguinte, outro comando push para colocar um quinto número aleatório, que não é verificado se é diferente, pra dentro do array que já tem os 4 números:

segredos.push(Math.round(Math.random() * 10));

Basta apagar esta linha, e depois implementar a parte html do código, e a quantidade de tentativas para adivinhar.

Bons estudos!

Muito obrigado pessal! Eu não tinha reparado. Valeu mesmo!!!