Oi Stella a logica em si parece estar perto de estar correta.
O unico problema foi o seguinte:
Quando voce verifica se o ingrediente digitado já foi digitado anteriormente com o loop
for(var posicao=0; posicao < ingredientes.length;posicao++){
if(ingredientes[posicao]==ingrediente){
encontrou=true;
break;
}
Você colocou tambem a logica de adicionar esse produto:
if(encontrou==false){
ingredientes.push(ingrediente);
contador++;
}
O que tens que fazer é verificar todos os produtos com o loop (FOR) e depois de sair do loop verificar se foi encontrado ou não, ou seja, precisa tirar essa verificação de dentro do loop como segue abaixo:
<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 encontrou = false;
for (var posicao = 0; posicao < ingredientes.length; posicao++) {
if (ingredientes[posicao] == ingrediente) {
encontrou = true;
break;
}
}
if (encontrou == false) {
ingredientes.push(ingrediente);
contador++;
}
}
console.log(ingredientes);
</script>
Espero ter ajudado,
Dica: Coloque um resposta ao seu usuario dizendo que o item que ele adiciona já foi adicionado anteriormente.