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

Dúvida no exercício

Sinceramente, essa parte de array está sendo um banho de água fria. E tenho certa idéia de que vai ficar mais complicado, porém não quero desanimar. Estou tentando entender o porque do meu código não estar funcionando, mas não consigo. É como se ele não inserisse o que tento informar no prompt e fica sempre pedindo o primeiro ingrediente. O alerta que coloquei para ser exibido também só é mostrado no momento em que cancelo a ação.


<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 < quantidade; posicao++){
            if(ingredientes[posicao] == ingrediente){
                existe = true;
                alert("voce ja inseriu este ingrediente!");
                break;
            }
            if(existe = false){
                ingredientes.push(ingrediente);
                contador++;
            }

        }


    }

    console.log(ingredientes);
</script>
2 respostas
solução!

Oi Vitor, tudo bem?

Não desanime!!! É só treinar e estudar lógica que você pega o jeito...

Vou pontuar duas coisas do código para que funcione conforme o esperado:

  • No if(existe = false) está faltando um =, desse jeito você está atribuindo false para o existe, ao invés de comparar os valores, o correto é if(existe == false);
  • Esse mesmo if do item acima deveria estar fora do laço for, logo abaixo, para que ele percorra todos os ingredientes e valide se ele já existe, só depois de validar todos, ou seja, só quando acabar o for é que ele deve validar se o ingrediente existe e então adicioná-lo na lista.
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 < quantidade; posicao++){
        if(ingredientes[posicao] == ingrediente){
            existe = true;
            alert("voce ja inseriu este ingrediente!");
            break;
        } 
    }

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

console.log(ingredientes);

Olá Erick! Obrigado, realmente olhando agora com mais calma, o que acho que me faltou mesmo foi ter atenção ao revisar o que estava fazendo. Fazendo as trocas aqui no mesmo código conforme tuas observações, o sistema funcionou como esperado. Muito obrigado novamente!