Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Soluciooon, 1 duda

<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.

1 respuesta

Hola Luis, espero que estés bien!

Indefinido significa valor indefinido, por lo que verificar la matriz y tener este atributo significa que no se construyó.

Usamos .length porque es más didáctico pensar que es la longitud de el array.

Creo que no necesitas el segundo if dentro del FOR porque esta verificación ya ocurre en el if del WHILE, ¿verdad?

Sí, la matriz tiene una longitud inicial de cero, pero a medida que agrega elementos, aumenta su longitud, y así es como dijiste, la matriz puede tener tantos elementos como quieras.

Si tienes más dudas, por favor házmelo saber y te responderé con calma. ¡Buenos estudios!

Saludos