Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Salada de fruta

Fiz o código. Da forma como colei abaixo, está funcionando. Minha dúvida é com relação à variável "receita". Quando dentro do while, a função "receita.push(ingrediente);" substitui sempre o elemento 0 do array. Foi preciso a variável ser declarada fora do while para que cada ingrediente fosse adicionado numa lista. Por que disso?

Por exemplo: se eu pedir 4 ingredientes e escrever mamão, laranja, maçã e banana, a variável receita termina com somente 1 elemento (sempre o último, nesse caso banana).

<meta charset="UTF-8">
<h1>Receitas do Yan</h1>

<script>
    function gerarReceita(quantidade) {
        var receita = [];
        var contador = 1;
        while(contador <= quantidade) {
            var ingrediente = prompt("Informe o ingrediente " + contador);
            var ingredienteInvalido = false;
            for(var indice = 0; indice < receita.length; indice++) {
                if(receita[indice] == ingrediente) {
                    alert("Esse ingrediente já foi inserido");
                    ingredienteInvalido = true;
                    break;
                }
            }
            if(ingredienteInvalido == false) {
                receita.push(ingrediente);
                contador++;
            }
        }
        return receita;
    }
    var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));
    var receita = gerarReceita(quantidade);
    console.log(receita);
</script>
1 resposta
solução!

Sempre que você declara uma variável dessa forma:

var receita = [];

Você está dizendo que ela é um array (ou vetor, a depender da situação) e que ele é vazio.

Por essa razão, se você a declara dentro do while, a cada iteração (esta é a palavra que se usa para designar cada vez que um laço é executado) a variável será declarada novamente e o seu conteúdo será um array vazio novamente, independente do que havia antes, ou seja, o item que será adicionado nesta iteração será sempre o primeiro!

Aliás, conceitualmente, está errado você declarar uma variável que já estava declarada anteriormente, ou seja, dentro de um laço, repetidas vezes.

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