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

Não entendi uma coisa em relação ao código para saber se há elementos repetidos.

Minha dúvida é: Se houve um break, a função "While" e "For" foram quebradas. Se elas foram quebradas, por que repetiu a pergunta do prompt: " 'Informe o ingrediente ' + contador " ?

<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!

Boa noite, Luciano! Tudo bem? Neste caso, o break quebra apenas o laço FOR, porém o WHILE continua. Para quebrar laços aninhados (neste caso, quebrar o FOR e o WHILE), é necessário dar um label para o bloco de código e se referir à este label ao utilizar o break. Veja este artigo: https://www.w3schools.com/jsref/jsref_break.asp em "Using the break statement with a label reference, to "jump out" of a nested for loop"

Obrigado! Entendi