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

Problema na exibição dos ingredientes

Problemas 1º) Os ingredientes não são exibidos no console do navegador, o que há de errado, como faço para exibi-los lá? 2º) Como eu faria para que os ingredientes fossem exibidos na tela, com uma função mostra, ou similar? 3º) Como faria para que ao repetir um ingrediente uma mensagem diferente da padrão fosse exibida?

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>

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

    function nomes(){
        return prompt("Informe o ingrediente ");
    }
    var ingredientes = [];
    var contador = 1;
    function pedido(){
        while( contador <= quantidade) {
                var ingrediente = nomes();
                var achou = false;
                for(posicao = 0; posicao <= ingredientes.length; posicao++){
                    if(ingrediente == ingredientes[posicao]){
                        achou = true;
                        break;

                    }
                }
                if(achou == false){
                    ingredientes.push(ingrediente);
                    contador++;
                }
        }
    }
    var ingredientes = pedido(quantidade);
    console.log(ingredientes);
</script>
3 respostas
solução!

Olá André, tudo bem.

Fiz algumas alterações no seu código e o deixei funcional., também deixei algumas observações referente as suas dúvidas.

Segue o código:

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

<script>

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

    function nomes() {

        return prompt("Informe o ingrediente");
    }

    function pulaLinha(quantidade) {

        for (count = 0; count <= quantidade; count++) {
            document.write("<br>");
        }
    }

    // Resposta da 1ª e da 2ª pertunta
    function mostraIngreditentes(array) {

        document.write("<h2>Lista de ingredientes:</h2>");
        for (count = 0; count <= array.length; count++) {
            document.write(count + 1 + "º " + "ingrediente: " + array[count] + "<br>");
        }
    }

    var ingredientes = [];
    console.log(ingredientes);
    var contador = 1;

    function pedido() {

        while (contador <= quantidade) {

            var ingrediente = nomes();
            var achou = false;

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

                if (ingrediente == ingredientes[posicao]){

                    achou = true;
                    // Resposta da pergunta 3
                    alert("Ingrediente já cadastrado! Informe outro.");
                    break;
                }
            }

            if (achou == false) {

                ingredientes.push(ingrediente);
                contador++;
            }
        }
    }

    // André aqui você está usando nome de variável duplicado
    pedido(quantidade);
    pulaLinha(1);
    mostraIngreditentes(ingredientes);

</script>

Espero que assim o tenha ajudado.

Bons estudos.

Olá André, tudo bem?

Respondendo a sua pergunta número 1 , fiz algumas alterações no seu código. Resumidamente você precisa passar um return ingredientes na sua função pedido.

Cuidado com variáveis globais e locais. As variáveis locais apenas pertencem ao escopo da função que você criou e as globais a todo o script.

<script>



    function nomes(){
        return prompt("Informe o ingrediente ");
    }


    function pedido(quantidade){
        var contador = 1;
        var ingredientes = [];

        while(contador <= quantidade) {

                var ingrediente = nomes();
                var achou = false;

                for(posicao = 0; posicao <= ingredientes.length; posicao++){
                    if(ingrediente == ingredientes[posicao]){
                        achou = true;
                        break;

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


    var ingredientes = pedido(parseInt(prompt("Quantos ingredientes você vai adicionar?")));
    console.log(ingredientes);
</script>

Obrigado, pela ajuda Ricardo e Henrique. Para o código funcionar usei a resposta de vocês dois. No for do Ricardo count <= array.length , acho que tem que ser apenas <, se não aparece um item a mais como undefined e usei o return do código do Henrique que estava faltando no meu.

<meta charset="UTF-8">

<h1>Receitas do Yan</h1>

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

    function nomes(){
        return prompt("Informe o ingrediente");
    }

    function mostraIngredientes(array){
        document.write("<h2>Lista de ingredientes</h2>");
        for(count=0; count < array.length; count++){
            document.write(count + 1 +"º" + "ingrediente: " + array[count] + "<br>");
        }
    }
    var ingredientes = [];
    var contador = 1;

    function pedido(){

        while( contador <= quantidade) {
                var ingrediente = nomes();
                var achou = false;
                for(posicao = 0; posicao <= ingredientes.length; posicao++){
                    if(ingrediente == ingredientes[posicao]){
                        achou = true;
                        alert("Ingrediente já cadastrado! Informe outro.");
                        break;

                    }
                }
                if(achou == false){
                    ingredientes.push(ingrediente);
                    contador++;
                }
        }
        return ingredientes;
    }
    pedido(quantidade);
    mostraIngredientes(ingredientes);
</script>