To com um problema nesse exercício. Esse programa deve receber os itens de uma receita digitados por usuário, salva-los dentro de um vetor, sempre verificando se o item digitado já não consta. Caso conste, deve exibir um alert() informando ao usuário que dado item já foi computado anteriormente, senão, deve gravar o item no vetor e repetir esse ciclo até a quantidade de ingredientes total ser saciada. Abaixo deixo o código.
<script>
//Vetor que guarda os itens.
var ingredientes = [];
//Variável que guarda quantos itens serão adicionados no vetor ingredientes.
var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));
//Variável de verificação.
var verifica = true;
//Laço para guardar os itens s no vetor.
for (var contador1 = 1; contador1 <= quantidade; contador1++){
var item = prompt("Informe o "+contador1+"º item: ");
/*Laço que verifica se o item digitado já existe ou não no vetor ingredientes. Caso exista, exibe alerta e muda o valor da variável de verificação para false.*/
for (var contador2 = 0; contador2 < ingredientes.length || verifica != true; contador2++){
if (item == ingredientes[contador2]) {
alert("Item já adicionado!");
verifica = false;
}
}
//Condicional que quarda o item digitado na primeira iteração.
if (contador1 == 1 && verifica == true){
ingredientes.push(item);
}
//Condicional que guarda o item após a primeira iteração e caso ele não seja repetido.
if (contador1 != 1 && verifica == true){
ingredientes.push(item);
}
//Condicional decrementa a variável contador1, caso o item digitado seja repetido e após a primeira iteração.
if (contador1 != 1 && verifica == false) {
contador1--;
verifica = true;
}
}
console.log(ingredientes);
</script>
O problema é que quando o usuário digita um valor que já existe no vetor ingredientes [ ] e o alert( ) do segundo for é exibido, após fechá-lo, o programa não dá continuidade, ou seja, no meu entender, deveria atribuir o valor false para variável verifica, com isso sair do segundo for, em seguida, ler a terceira condição:
//Condicional decrementa a variável contador1, caso o item digitado seja repetido e após a primeira iteração.
if (contador1 != 1 && verifica == false) {
contador1--;
verifica = true;
}
Depois disso, novamente seguir com o primeiro for e assim sucessivamente até contador1<= quantidade retornar verdadeiro.
Como eu faço isso? Realmente, sou total noob nisso aqui.
Eu sei abrir o Inspector do Google Chrome, mas não há nada no console. Tem alguma outra ferramenta?
Ok, consegui resolver. O problema situava-se na minha lógica mesmo. Poderia ser feito de forma bem mais simples e sem necessidade de tantos if(s).
Cheguei no seguinte código.
<script>
//Vetor que guarda os itens.
var ingredientes = [];
//Variável que guarda quantos itens serão adicionados no vetor ingredientes.
var quantidade = parseInt(prompt("Quantos ingredientes você vai adicionar?"));
//Laço para guardar os itens s no vetor.
for (var contador1 = 1; contador1 <= quantidade; contador1++){
var item = prompt("Informe o "+contador1+"º item: ");
//Variável de verificação.
var verifica = true;
/*Laço que verifica se o item digitado já existe ou não no vetor ingredientes. Caso exista, exibe alerta e muda o valor da variável verifica para false.*/
for (var contador2 = 0; contador2 < ingredientes.length; contador2++){
if (item == ingredientes[contador2]) {
alert("Item já adicionado!");
verifica = false;
contador1--;
break;
}
}
if (verifica == true){
ingredientes.push(item);
}
}
console.log(ingredientes);
</script>