Eu fiz esse código aqui. Contudo observei que ele repete todas as vezes quando coloco um ingrediente repetido. Posso estar enganado, mas é assim que ele deve funcionar mesmo? Porque ele repete? Eu entendi que ele repete porque já que você determinou uma quantidade de ingredientes, ele então vai lhe perguntar a quantidade de ingredientes exatas que você disse no inicio, e sob a condição "if" ele deveria parar o loop "for" por causa do "break" e pular para o outro "if" que está no "while", que não é o que ocorre, a sensação que eu tenho é que ele para no "if" do "for". Então para que ficasse mais coerente essa repetição, eu coloquei um "alert" informando que o ingrediente já foi colocado. Não sei se ficou claro, mais é isso. :D Espero que tenham entendido.
<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){
alert("Você já digitou esse ingrediente. Digite outro");
existe = true;
break;
}
}
if (existe == false){
ingredientes.push(ingrediente);
contador++;
}
}
console.log(ingredientes);
</script>