eu revisei algumas vezes porem sempre parece fazer mais sentido logico colocar o contador++ fora do ultimo if
if (achou == false){
ingredientes.push(ingrediente);
contador++;
}
pois caso já exista o ingrediente dentro do array, o código em questão sera executado e a variável achou ira mudar seu valor para verdadeiro, sendo assim pelo menos na minha cabeça não faz sentido ser possível incrementar a variável contador pois ela só seria executada caso a variável achou recebesse false
for(var numero = 0; numero < quantidade; numero++ ){
if (ingrediente == ingredientes[numero]){
achou = true
break
}
}
Sei que na pratica o código esta totalmente correto porem não compreendi a logica por trás dele