Vamos lá:
Minha Lista = 5,7,10,2
Posições de cada valores respectivamente: 0,1,2,3
Quantidade de valores dentro da Lista: 4
Na minha lista eu tenho 4 valores, que vai da posição 0 até 3, então, a minha última posição é o 3.
Quando eu quero saber a quantidade de valores dentro da minha lista eu uso o ".length" e nessa lista ele me trás o valor 4 , pois tem 4 valores.
Para eu poder fazer o código mais interessante para mostrar o alerta de erro eu tive que criar uma variável para receber a última posição tendo como referência a quantidade de valores que a lista tem. Sabendo que a minha quantidade de valores é 4 e a minha última posição é 3, então a minha última posição é 1 a menos que a quantidade.
var ultimaPosicao = segredos.length - 1;
// 3
Com a minha variável criada eu criei dentro do FOR, na linha 21, um IF falando que se ele estiver verificando a última posição e se o valor que ele colocou é diferente, então irá aparecer o alerta de ERRO. pois ele chegou na última verificação sem ter acertado nenhum nº da lista.
if (posicao == ultimaPosicao && input.value != segredos[posicao]){
Vamos supor que eu tenha colocado "1" no input e ,então, eu não acertei nenhum número da lista.
Eu creio que será lido o último IF da seguinte forma:
if ( posicao (3) == ultimaPosicao (3) && input.value (1) != segredos (2) [posicao (3) ] ) {
// Vai dar TRUE e irá mostrar o alerta apenas uma vez e irá ser depois da última verificação.
Verifiquem, por favor, se funciona com vocês e se tem algum erro no meu código. Obrigado!
<meta charset="UTF-8">
<input/>
<button>Compare com o meu Segredo</button>
<script>
var segredos = [5,7,10,2];
var ultimaPosicao = segredos.length - 1;
var input = document.querySelector("input");
input.focus();
function verifica () {
for (var posicao = 0 ; posicao < segredos.length ; posicao++){
if (input.value == segredos[posicao]){
alert ("Você ACERTOU!! A lista dos meus segredos eram: " + segredos + " Posição: " + (parseInt(posicao)+1) + " Número: "+ segredos[posicao]);
break;
}
if (posicao == ultimaPosicao && input.value != segredos[posicao]){
alert ("Você NÃO ACERTOU nenhum dos números de dentro da minha lista. Os números da minha lista eram: " + segredos);
}
}
input.value = "";
input.focus();
}
var button = document.querySelector("button");
button.onclick = verifica;
</script>