<meta charset="UTF-8"/>
<h1>Recetas de Luis</h1>
<script>
var ingredientes = [];
var cantidad = parseInt(prompt("¿Cuántos ingredientes vas a añadir?"));
var contador = 1;
while( contador <= cantidad) {
var ingrediente = prompt("Informe el ingrediente " + contador);
if (ingredientes.length == 0) {
ingredientes.push(ingrediente);
contador++;
} else {
for (lugar = 0; lugar <= ingredientes.length; lugar++) {
if (ingrediente == ingredientes[lugar]) {
alert("Estas agregando un ingrediente repetido");
alert("Introduce un ingrediente diferente");
break;
}
if (lugar == ingredientes.length) {
ingredientes.push(ingrediente);
contador++;
break;
}
}
}
}
console.log(ingredientes);
</script>
Mi duda es que, al principio en el "if, else" en vez de poner "if (ingredientes.length == 0)" puse "if (ingredientes == undefined)" y el programa no funcionó, ¿fue porque "undefined" no es el valor que tiene un array vacío o por qué fue :( ?
No quise usar el valor booleano porque no entendía cual era su función específica en el código entonces busque otra forma, ya después me dí cuenta de su función jajaja y también con el ejemplo del instructor me quedó más claro.
Lo que hice fue añadir el condicional "if, else" de modo que en el "if" puedo iniciar el array y en el "else" ejecuto el análisis del array para ver si nada se repite, esto usando el "for". Dentro del "for" puse que la condición sea "menor o igual a" porque, si la variable "lugar" llega a ser igual que la longitud del array significa que ningún valor se repite y es ahí cuando ocupo el segundo "if" dentro del "for" que me permite añadir el nuevo ingrediente al array, aumentar en 1 la variable contador y salir del ciclo for.
Según yo se puede usar cualquier número para la cantidad de ingredientes y saldrá bien, pero seguro seguro no ando.