2
respostas

Não consigo solucionar

Não consigo solucionar, já tentei de diversas maneiras mas não encontro o erro para não permitir a entrada de um valor já existente na array, Segue meu código:

<meta charset="UTF-8">

<title>Lista de ingredientes do Gabriel</title>

<h1>Receitas do Gabriel</h1>

<script>
    var listaIngredientes = [];

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

    var contador = 1;

    var ingredienteNovo = true;

    while( contador <= quantidadeIngredientes) {

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

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

            if (listaIngredientes[posicao] == ingrediente){
                ingredienteNovo = false;

            }
        }

        if (ingredienteNovo){

            listaIngredientes.push(ingrediente);

            contador++;

        } else {
            alert("Ingrediente já inserido, por favor, insira um novo ingrediente");
        }

    }


    console.log(listaIngredientes);
    document.write(listaIngredientes);

</script>
2 respostas

Oi, Gabriel. Eu refiz seu código. Espero ter ajudado. Você pode comparar os dois e vê se faz sentido como eu refiz, qualquer dúvida manda ai.

<meta charset="UTF-8">

<title>Lista de ingredientes do Gabriel</title>

<h1>Receitas do Gabriel</h1>

<script>
    var listaIngredientes = [];

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

    var contador = 1;

    while( contador <= quantidadeIngredientes) {

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

        var ingredienteNovo = false;

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

            if(listaIngredientes[posicao] == ingrediente){
                ingredienteNovo = true;
                alert("Ingrediente já inserido, por favor, insira um novo ingrediente");
                break;
            }
        }


        if (ingredienteNovo == false){ 
            listaIngredientes.push(ingrediente);
            contador++;
        }

    }


    console.log(listaIngredientes);
    document.write(listaIngredientes);

</script>

Boa tarde Gabriel, tudo bem?

No seu código, até onde eu consigo avançar nesse conhecimento inicial, você deixou o if (ingredienteNovo) sem nenhuma condição. Não tem alguma equivalência para ser analisada pelo programa. O ingredienteNovo sempre será de valor falso, pois é só isso que "acontece" com essa variável durante a avaliação do que foi digitado pelo usuário. Onde deveria ser feito uma ponderação, uma analise do valor, não tem nenhuma analise para a linguagem chegar a alguma conclusão.

Nesse if (ingredienteNovo) você precisa adicionar alguma equivalência para ser analisada pelo sistema. Por exemplo if (ingredienteNovo == true); Pois, se a equivalência de ingrediente igual transforma o valor da variável ingredienteNovo para falso, ela precisa possuir valor verdadeiro para ser um item novo, certo? Apenas esse ajuste, provavelmente, fará seu código rodar, sem problemas.

Você pode ainda, como a Paula mostrou reescrevendo tudo, juntar o alerta de ingrediente repetido logo abaixo da atribuição ingredienteNovo = false; podendo reduzir o número de linhas do seu código.