Oi Gabriel, meu aluno. Boa tentativa com o for, mas tem um pequeno detalhe que passou desapercebido por você. Se o ingrediente já existe, temos que perguntar novamente. Tenho certeza que você sabe que devemos fazer isso, mas em seu código, se o ingrediente já existe, não podemos incrementar o contador do for, se fizermos isso, estaremos considerando como se aquele ingrediente valesse. Daí, o problema do seu código. Se você digitar A e depois A, ele exibe apenas um ingrediente e não pergunta novamente.
É por isso que um while é interessante, porque nele podemos hora incrementar a variável ou não, no caso, a variável contador para saber quantos ingredientes já cadastramos.
Veja o mesmo código com o while
, aliás, um bom exemplo do uso do while
:
var ingredientes = [];
var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));
var contador = 1;
while( contador <= quantidade) {
var ingrediente = prompt("Informe o ingrediente " + contador);
var existe = false;
for( var posicao = 0; posicao < ingredientes.length; posicao++) {
if( ingredientes[posicao] == ingrediente) {
existe = true;
break;
}
}
if( existe == false) {
ingredientes.push(ingrediente);
contador++;
}
}
console.log(ingredientes);
Veja que o while esta ai para controlar quantos ingredientes você já ACEITOU do teclado. Se você digitar um que já existe, ele não incrementará o contador.
Veja que esse é um exemplo que o for não é muito indicado, porque ele já incrementa automaticamente o seu contador no final do loop. Com While, temos mais controle sobre o que fazer com o incremento.
Sucesso e bom estudo!