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

Não entendi quando na resposta o instrutor diz que o break quebra o for() e o while()

No meu entender, no codigo ele quebra apenas o for, cai na verificação do if seguinte que ainda esta dentro do while e passa batido sem incrementar a variavel... e por esse exato motivo a pergunta é refeita ao usuário. meu código ficou assim e funcionou... podem avaliar por favor?

<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 achou = false;

        for(posicao = 0; posicao <= ingredientes.length; posicao++) {

            if(ingredientes[posicao] == ingrediente) {
                alert("igrediente repetido!")
                achou = true;
                break;
            } 
        }

        if(achou == false) {
            ingredientes.push(ingrediente);
            contador++;
        }
    }

    console.log(ingredientes);
    document.write("<br>");
    document.write("<h2> Ingredientes </h2>")
    document.write(ingredientes);
</script>
1 resposta
solução!

Olá Wagner, tudo certo?

O seu código está funcionando. O break quebra o if em que ele está e ele volta para o for, pois este if está dentro do for. Quando o for terminar, o if seguinte não tem a condição atendida, por isso não faz o push do ingrediente, então o laço volta para o while, que continua o seu loop. Deu pra entender? Espero que sim! :)

Qualquer dúvida estamos aí.

Bons estudos!