Olá pessoal, eu havia achando um probleminha no meu código e optando por fazer algumas alterações até funcionar. Bom na aula "Manipulando Array" o professor fez uso da estrutura While e também do For. Pois bem até aí tranquilo, eu pra variar um pouco resolvi fazer os dois laços de repetição com o for, mas olhem só que curioso (pelo menos pra mim)
function criarArrayNumeros(tamanho) {
let segredos = [];
for (let i = 0; i < tamanho; i++) {
let numeroAleatorio = sorteia();
if (numeroAleatorio !== 0) {
let achou = false;
for (let i = 0; i < segredos.length; i++) {
if (segredos[i] === numeroAleatorio) {
achou = true;
break
}
}
if (achou === false) {
segredos.push(numeroAleatorio);
}
}
}
return segredos;
}
Parece normal certo? Porém ao gerar o array seu tamanho variava independente da quantidade que eu passava como parâmetro da função, se eu colocava 2, em um momento me retornava um array com 1 posição, a medida em que eu ia atualizando a página o tamanho do array ficava variando entre 2 e 1.
A solução qu eu tive foi basear no código com o while e resolvi dessa forma.
function criarArrayNumeros(tamanho) {
let segredos = [];
for (let i = 0; i < tamanho;) {
let numeroAleatorio = sorteia();
if (numeroAleatorio !== 0) {
let achou = false;
for (let i = 0; i < segredos.length; i++) {
if (segredos[i] === numeroAleatorio) {
achou = true;
break
}
}
if (achou === false) {
segredos.push(numeroAleatorio);
i++
}
}
}
return segredos;
}
Como podem ver eu omiti a expressão final que seria i++
for (let i = 0; i < tamanho;) {}
e o adicionei no final, no bloco
if (achou === false) {
segredos.push(numeroAleatorio);
i++
}
Fazendo isso funcionou normalmente, só que fiquei com uma pulga atrás da orelha, será essa a solução com o for? Ou eu deixei passar alguma coisa? Desde já agradeço a atenção de vocês ao código e a dúvida em sí. Bons estudos a todos e Lets Code