3
respostas

Minha solução

Queria tentar sem usar var = false. Não consegui fazer usando else no lugar do segundo if, mas deu certo. Se alguem souber como...

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>

    function mostra(texto) {

    document.write(texto)
    document.write("<br>")

    }

    var ingredientes = [];

    var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));

    var contador = 1;

    while(contador <= quantidade) { 

        var ingrediente = prompt("Informe o ingrediente " + contador);

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

        if(ingredientes[posicao] == ingrediente) {
            break;

        } 

        } 

        if(ingredientes[posicao] != ingrediente) {

            ingredientes.push(ingrediente);
            contador++;

        }

    }

    mostra("Lista de ingredientes: ");

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

            mostra(ingredientes[posicao]);

        }

    console.log(ingredientes);
</script>
3 respostas

o Var que tem dentro do for chamado posicao só vai funcionar dentro do for. Se queres perguntar depois do for se existe o ingrediente, você precisa criar uma variável antes do for que poderia ser:

var existe = false;

e dentro do for ao encontrar o valor voce diz:

existe = true;
 break;

No segundo if colocaria só isso:


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

Entendo. Mesmo assim, porque o código funcionou? Ele foi execultado como devia: não deixava eu repetir ingrediente e só ia para o proximo quando eu digitava um ingrediente diferente até terminar a quantidade informada no prompt da variável quantidade.

E teria como usar else ao invés de um segundo if?

Sim claro no if ele pergunta se é igual caso seja igual cai no if caso não seja cai no else

if(ingredientes[posicao] == ingrediente) {
            break;
        } 
       else{
            ingredientes.push(ingrediente);
            contador++;

        }