Criei um programa parecido com o adivinha_mais.html e dentro dele a função preencheLista:
function preencheLista(tamanhoLista){
var listaAleatoria = [];
var i = 1;
while(i <= tamanhoLista) {
var numeroAleatorio = sorteiaNumero();
var achou = false;
/*
for(var j = 0; j < listaAleatoria.length; j + 1){
alert(numeroAleatorio + 'x' + listaAleatoria[j]);
if(listaAleatoria[j] == numeroAleatorio){
achou = true;
break;
}
}
*/
var j = 0;
while(j < listaAleatoria.length){
if(listaAleatoria[j] == numeroAleatorio){
achou = true;
break;
}
j = j + 1;
}
if(achou == false){
listaAleatoria.push(numeroAleatorio);
i = i + 1;
}
}
console.log(listaAleatoria);
}
Para verificar se o número sorteado já exista na lista antes de registrá-lo, eu utilizei primeiro a estrutura for (trecho entre /* */), mas o programa entrava em um loop infinito.
Depois de inúmeras tentativas de mudanças, testei substituir pela estrutura while(j < listaAleatoria.length) e o programa funcionou.
Alguém saberia me dizer o que estava errado?
Ps.: para fazer o incremento, a sintaxe i++ também não funcionou.