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

Duvida

Quando eu executo o código, e abro o console. recebo "undefined" na linha 49(console.log(segredos))

estou a um bom tempo tentando descobrir onde esta o erro e não consigo achar, eu sei que ele deve estar dentro da minha função "sorteiaNumeros"

aqui esta o código :

<meta charset="utf-8">




<input/>

<button>Compare com meu segredo</button>


<script type="text/javascript">
function sorteia() {
    return Math.round(Math.random() * 10);
}

function sorteiaNumeros(quantidade) {
    var segredos = [];
    var numero = 1;

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



        while(numero <= quantidade){
            var achou = false;
            var numeroAleatorio = sorteia();

            if (numeroAleatorio != 0 ) {
                if (segrdos[posiçao] == numeroAleatorio){
                achou = true;
                break;

        }


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


            }

        return segredos
}
}
var segredos = sorteiaNumeros(3);
console.log(segredos);

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

var achou = false;

function verifica() {
    for(var i = 0; i < segredos.length; i++) {

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

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

function errado(){
    if(achou == false){
        alert("Você errou!");
}
}



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

button.onclick = verifica;

button.onclick = errado;






</script>
3 respostas
solução!

Olhando o seu código, eu entendi que você quer gerar um array de números aleatórios, passando como parâmetro a quantidade de elementos do array.

Para que a função "sorteiaNumeros" tenha este comportamento, você vai ter que fazer a seguinte alteração:

function sorteiaNumeros(quantidade) {
    var segredos = [];
    var numero = 1;

    while(numero <= quantidade){

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

        if (numeroAleatorio != 0 ) {

            if (segredos.length == 0){
                segredos[0] = numeroAleatorio;
                numero++;

            } else {
                for (var posicao = 0; posicao < segredos.length ; posicao++) {    
                    if (segredos[posicao] == numeroAleatorio){
                        achou = true;
                        break;

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

        }
    }
     return segredos
}

Deu certo, obrigado

Blz, Arthur

Olhando seu código, verifiquei um erro de digitação onde você "comeu" uma letra.

if (segrdos[posiçao] == numeroAleatorio){

Segue a dica do Daniel na melhoria do código