Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Não consegui achar o erro mas ainda independente de ser repedido ou não o item está contando

<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 semrepetir = true
        var ingrediente = prompt("Informe o ingrediente " + contador);
        for (var varrearray = 0; varrearray < ingredientes.length; varrearray++) {

         if (ingredientes[varrearray] == ingrediente)
                 {semrepetir = false; 
                     break;
                   }


        }
       if (semrepetir == true); {
       ingredientes.push(ingrediente);
       contador++;
       }



    }

    document.write(ingredientes);
</script>
1 resposta
solução!

Fala Ian, beleza? É um erro muito bobo que eu reparei (e até demorei pra achar) que infelizmente o console não acusa como erro (?). Na sua linha:

if (semrepetir == true); {

você coloca um ponto e vírgula após a condição, o que anula totalmente ela! O compilador lê essa instrução como "se semrepetir == true não faça nada", pois não há nada entre o if e o ponto e vírgula. Depois dessa linha ele lê o resto das instruções como se elas estivessem fora do if. Por isso que quando você adicionava sempre dava certo, independente da string.

O correto então seria:

if (semrepetir==true) {