Jogo da Adivinhação, números aleatórios, sem o zero e sem números repetidos.
function sorteiaNumeros(qtd){ //Criamos a função sorteiaNumeros.
var secret = []; //Com suas variáveis.
var num = 1;
while(num <= qtd){ //while, para gerarmos os elementos da lista secret.
var numAleatorio = sorteia (); //Variável numAleatório chamando a função sorteia.
if(numAleatorio !== 0){ //Condição para números diferentes de zero.
var achou = false;
for(var posicao = 0; posicao < secret.length; posicao++) { //for para criarmos nºs diferentes.
if (secret[posicao] == numAleatorio) {
achou = true;
break;
}
}
if(achou == false) {
secret.push(numAleatorio); //empurra numAleatorio para a lista secret.
num++; // incrementa num até o valor de qtd.
}
}
} return secret; //retorna valores que serão atribuídos aos segredos.
No comando for, para criarmos números diferentes, var posicao é declarado e inicializado com valor nulo, em seguida, temos a condição posicao < secret.length para execução do if que vem abaixo: if(secret[posicao]==numAleatorio). E, por fim, o incremento com posicao++. Certo? Quando var numAleatorio gerar o primeiro número (sendo diferente de zero), este ocupará a posição secret[0], então, como o if que vem abaixo será false? numAleatorio e secret[0] não serão os mesmos? Aliás, como posicao < secret.length, já que secret só terá um "tamanho", depois que valores lhe forem inseridos?