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

Após repetir um ingrediente os ingredientes seguintes não são inseridos no Array

<meta charset="UTF-8">

<script>

    var ingredientes = [];
    var contadorIngre = 1

    var quantidade = parseInt(prompt("Insira a quantidade de ingredientes da lista"));

    controle = 0;
    novo = true;

    while(controle < quantidade){

        var nomeIngrediente = prompt("Insira o nome do ingrediente " + contadorIngre++);

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

            if(ingredientes[posicao] == nomeIngrediente){

                novo = false;
                break;
            }
        }
        if(novo == true){

            ingredientes.push(nomeIngrediente);
        }
        controle++;
    }
    console.log(ingredientes);

</script>
3 respostas

Olá! Tudo bem com você? =)

Os ingredientes seguintes não estão sendo inseridos no Array, pois você está utilizando o comando break, dentro do if que verifica se é igual ou não... Essa instrução diz para o programa terminar o laço, ou seja, ele pula fora do for, sacou? =)

Se você quiser que ele passe para a próxima iteração, sem sair do laço, você pode utilizar o continue em seu lugar, sacou? =)

Você poderia testar e ver se isso resolve para você, por favor? Espero ter ajudado, mas qualquer dúvida não deixe de postar por aqui, no fórum, para que possamos ajudá-lo, beleza? =D

Abraço e bons estudos,

Fábio

Olá Fábio.

Obrigado pela resposta, mas testei e não funcionou. A ideia do break é que se o ingrediente for repetido ele não deve ser inserido, somente ingredientes novos devem ser inseridos na lista. Se for repetido sai do loop com o break e vai pro próximo ingrediente, caso esse seja novo ai sim adiciona na lista e incrementa a variável de controle.

solução!

Fábio.

Consegui arrumar aqui. Coloquei a variável "novo = true", dentro do while e agora está funcionando certinho. Do jeito que estava antes, ela sempre estaria com valor de false e por isso os outros ingredientes mesmo sendo novos não caiam na lista.

Abraços e obrigado mais uma vez =]

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software