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

Arrays: trabalhe com muitos dados - Exemplo Adivinha

Pessoal, Tudo bom?

Estou com uma dúvida no exemplo abaixo que não consigo resolver, quando abro o html e coloco um número aleatório vi que o código percorre 6 vezes no array e me retorna 6 alerts ("Infelizmente você errou") quando há erro.

Gostaria de saber como faço o "for" percorrer por todo o array e me retornar somente uma mensagem de erro.

<input type="text" id = "numero" />
<input type="submit" id = "adivinhar" value="Compare com o número que estou pensando!" />
<meta charset = "UTF-8">
<script>

var segredo = [16, 34, 37, 42, 50, 58];        

var caixaDoNumero = document.getElementById("numero");

var botaoClicado = function() {
for(var i = 0; i < segredo.length; i = i + 1) {
    if(segredo[i] == caixaDoNumero.value) {
    alert("Você acertou! Parabéns!"); break
};    
    else {alert("Infelizmente você errou");}
    };
};
var botaoAdivinhar = document.getElementById("adivinhar");
botaoAdivinhar.onclick = botaoClicado;

</script>

Obrigado

2 respostas
solução!

Oi Vitor, tudo bem? Vejamos...

Vamos pensar no seu código, a cada iteração do loop você faz um if ... else por causa dessa verificação acontece esse problema, sempre que não for verdadeiro, vai ser falso e sempre vai imprimir a mensagem.

O que podemos fazer? Você pode remover esse else e colocar a mensagem de errou depois do loop. E no lugar do break que vai só quebrar o laço, você pode usar um return que sai da função inteira.

Sendo assim, se você acertou, ele mostra a mensagem e finaliza a função por causa do return, mas se você errou, ele termina o loop e mostra a mensagem de errou. Faz sentido certo? Faça o teste!

Qualquer dúvida, pode perguntar.

Vitor, Bom dia !

fiz algumas alterações na função para seu código funcionar .

var botaoClicado = function() {

var achou = false;

for(var i = 0; i < segredo.length; i = i + 1) {
    if(segredo[i] == caixaDoNumero.value) {
    achou = true;
         break;
     }
}
    if( achou == true){
        alert("Você acertou! Parabéns!");

    } else {alert("Infelizmente você errou");}
};

repare que coloquei uma variavel para modificar a situação quando o número está certo .

espero ter aajudado , bons estudos