3
respostas

Ajuda, vejam se meu código está aceitavel, depois de muita tentativas...

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>
<br><hr><br>

<script>


    function inserirIngredientes (quantidade){

        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++;
            }


        }

        return ingredientes;

    }

    var ingredientes = inserirIngredientes()







    console.log(ingredientes);


</script>
3 respostas

Show! Uma sugestão é retirar o if que vem após o for. Como você já está verificando se o ingrediente existe dentro do for, ele só vai executar o restante do laço while se o ingrediente não existir. Logo não há necessidade de verificar se existe == false, pois se ele chegou até ali, você já fez a verificação.

Eu verifiquei esta situação, mas se ele retirar o IF após o FOR, não dará certo, pois o BREAK interrompe o laço FOR e vai para o laço WHILE. Ou seja, se não tiver essa condição para verificar se existe==false, mesmo se tiver repetido, vai adicionar ao ARRAY. Certo?

Tem razão. Desculpe o equívoco.