Oi, Thyago! Tudo bem?
Desculpa a demora por um retorno
Adorei que você buscou uma lógica diferente para chegar no mesmo resultado proposto pela questão! Porém, testando o seu código, podemos notar que ele não nos fornece a funcionalidade esperada. O comando não adiciona diferentes nomes de ingredientes ao array e não impede que os ingredientes se repitam.
É necessário então a utilização de uma variável auxiliar, que chamaremos de existe, de forma que os valores booleanos (true e false) definirão o comportamento das estruturas condicionais do código (if e for). Apenas dessa forma o programa consegue percorrer todo o array comparando-o com o ingrediente fornecido, seguindo as instruções esperadas.
Fica abaixo o código corrigido:
<meta charset="UTF-8">
<h1>Receitas do Yan</h1>
<script>
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++;
}
}
function mostra(frase){
document.write(frase);
pulaLinha();
}
function pulaLinha(){
document.write("<br>");
}
mostra("<h2> Lista de Ingredientes: </h2>")
for(var i=0; i< ingredientes.length; i++){
var mot = ingredientes[i];
mostra("<h2>"+ mot + "</h2");
}
console.log(ingredientes);
</script>
Para melhor visualização do problema abordado sugiro o teste dos dois códigos, executando-os no browser e comparando os seus comportamentos.
Um forte abraço e parabéns pelo seu desempenho!
Caso este post tenha te ajudado, por favor, marcar como solucionado ✓. Bons Estudos!