Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Opinião do instrutor - dúvida!

Na descrição da resposta, é dito que saímos do loop por meio do break, mas se eu apago o break, o programa funciona da mesma forma. Como isso é possível? Estaria o existe=true quebrando o loop?

Também é dito que o break "quebra" o for e o while. Está correto? Ele não "quebra" apenas o for?

<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) {
                existe = true;
                break;
            }
        }
        if( existe == false) {
            ingredientes.push(ingrediente);
            contador++;
        }
    }
    console.log(ingredientes);
</script>
2 respostas
solução!

Prezado Jorge pelo que eu pude perceber, quanto a dúvida da quebra do loop, quando o if( ingredientes[posicao] == ingrediente) identifica uma igualdade ele executa o "existe=true" e retorna para a primeira instrução do while, tanto que a pergunta é refeita, sendo assim, ele nem chega no break ele retorna antes. Outro teste feito é quando não há igualdade na instrução do if, o existe = true tem seguimento para o break e as próximas instruções. Neste caso o break também não fez falta. Eu usei o vscode f11 passo a passo.

Entendi. Obrigado por compartilhar Carlo!