No tienes acceso a esta clase

隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera

Playground: Closure para Almacenar Datos de Mascotas

10/13

Aportes 70

Preguntas 4

Ordenar por:

驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?

o inicia sesi贸n.

Me encantan estos playgrounds, espero los incorporen en todos los cursos 馃槂

export function createPetList() {
  const petList = [];
  return function addPet(myPet) {
    if (myPet) {
      petList.push(myPet);
    }
    return petList;
  }
}

Si quieren probar en VSCode con el Code Runner, sin el console.log no devuelve nada, tambi茅n hay que quitar el 鈥渆xport鈥. A m铆 este me sali贸 bien a la primera, el playground anterior fue frustrante, ya voy entendiendo xD

function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  const petList = [];
  return function (newPet) {
    if (newPet) {
      petList.push(newPet);
    }
    return petList;
  };
}
const myPetList = createPetList();

console.log(myPetList("michi"));
console.log(myPetList("firulais"));
console.log(myPetList());

Wow este sistema de Playground es incredible!

No pongan los resultados en los comentarios, si no no tiene sentido que pongan playgrounds鈥 es lo mismo que hacer un spoiler 馃槮

Les comparto mi soluci贸n.

export function createPetList() {
  const pets = []
  return (info) => info ? pets.push(info): pets
}

Tuve que ver la clase como 4 veces pero creo que lo tengo:
s closures son una caracter铆stica importante de JavaScript, y entender c贸mo funcionan es esencial para escribir c贸digo limpio y eficiente. Un closure es una funci贸n que se define dentro de otra funci贸n, y que tiene acceso a las variables y par谩metros de la funci贸n externa. Adem谩s, el closure mantiene una referencia a los valores de estas variables, incluso despu茅s de que la funci贸n externa ha terminado de ejecutarse.

Veamos un ejemplo para entender mejor c贸mo funcionan los closures. Imagina que queremos escribir una funci贸n que multiplique un n煤mero por un factor, pero queremos definir el factor en una funci贸n externa:

function multiplicarPor(factor) {
  return function(numero) {
    return numero * factor;
  }
}

var duplicar = multiplicarPor(2);
var triplicar = multiplicarPor(3);

console.log(duplicar(5)); // Output: 10
console.log(triplicar(5)); // Output: 15

En este ejemplo, la funci贸n multiplicarPor devuelve otra funci贸n que realiza la multiplicaci贸n. La funci贸n interna mantiene una referencia al valor de factor, que se define en la funci贸n externa. Cuando llamamos a multiplicarPor(2), se devuelve una funci贸n que multiplica el n煤mero por 2. Al llamar a multiplicarPor(3), se devuelve otra funci贸n que multiplica el n煤mero por 3. En ambos casos, se crea un closure que mantiene una referencia al valor de factor.

En resumen, los closures son 煤tiles porque permiten crear funciones que mantienen una referencia a los valores de las variables y par谩metros de la funci贸n externa, incluso despu茅s de que la funci贸n externa ha terminado de ejecutarse. Esto hace que las funciones sean m谩s flexibles y reutilizables, y puede ayudar a evitar errores comunes en el c贸digo.

Esto si que es la educaci贸n del futuro!

Para resolver este desaf铆o, se puede crear una funci贸n llamada 鈥渃reatePetList鈥 que al ser llamada inicialmente crea una closure que almacena un array vac铆o. Cada vez que se llama a esta funci贸n con un par谩metro, se agrega ese par谩metro al array almacenado en la closure. Si se llama a la funci贸n sin pasarle ning煤n par谩metro, entonces se retorna el array completo almacenado en la closure. A continuaci贸n se presenta un ejemplo de c贸digo en JavaScript para ilustrar c贸mo podr铆a implementarse esta soluci贸n:

export function createPetList() {
  let petList = [];
  return function (pet) {
    if (pet === undefined) {
      return petList;
    }
    petList.push(pet);
  }
}

Mi solucion

export function createPetList() {
  let _mascotas = [];

  return function guardarMascota(mascota) {
    if (mascota) {
      _mascotas.push(mascota);
    }
    return _mascotas;
  };
}

Comparto mi soluci贸n

export function createPetList() {
  let listaPerros = [];
  function agregarPerros(a) {
    if (!a) {
      return listaPerros;
    } else { 
      listaPerros.push(a);  
    }
  }
  return agregarPerros;
}
export function createPetList() {
  const list = [];
  return function addPet(myPet) {
    if (myPet) {
      list.push(myPet);
    }
    return list;
  }
}
export function createPetList() {
  let lista = [];
  function mascotas(mascota) {
    if (!mascota) {
      return lista;
    }
    lista.push(mascota);
  }
  return mascotas;
}

Aqu铆 mi c贸digo:


function createPetList() {
    const pets = [];
    
    function addPet(pet) {
        if (pet) {
            pets.push(pet);
            return pets
        }
        return pets
    }
    console.log(pets);
    return addPet;
}
const myPetList = createPetList();
myPetList("michi");
myPetList("firulais");
myPetList();

va mi solucion para este playground
.
.
.
.
.
.
.
.
.
.
.
.

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  let petList = [];
  function addPet(pet) {
    if (pet) {
      petList.push(pet)
    }
    return petList; 
  }
  return addPet;
}

隆驴C贸mo van banda?!

Por ac谩 mi soluci贸n por si les sirve 馃挭:

export function createPetList() {
  const petList = [];
  const savePet = (pet) => {
    return !pet ? petList : petList.push(pet)
  }
  return savePet
}

Gracias por tu 鈾.

Esta fue mi versi贸n, fue mas como intentar emular lo aprendido en la clase anterior

export function createPetList() {
  let array = []
  function pet(myPet) {
    if ((myPet === "") || (myPet === null) || (myPet === undefined)) {
      return array
    }else {
      array.push(myPet)
    }
  }
  return pet
}

Va mi c贸digo 馃槃

export function createPetList() {
  const listaMascotas = [];
  function misMascotas(nombreMascota) {
    if (nombreMascota) {
      listaMascotas.push(nombreMascota);
    } else {
      return listaMascotas;
    }
  }
  return misMascotas;
}

habia agregado una validacion para el tipo de variable y funciono, con lo otros ejemplo me di cuenta que esa informaci贸n no era relevante, no se para que la colocan si javascript no la requiere!!!

  // Tu c贸digo aqu铆 馃憟
  let listPets = [];
  function operPets(namePet) {

    if (namePet) {
      listPets.push(namePet);
    }
    else {  //Viene en blanco el parametro
      return listPets;
    }
  }
  return operPets;  
function createPetList(){
    const list = [];

    function petList(pet) {
      if (!pet) {
        return list
        
     
      } else {
        return list.push(pet);
        
      }
     
    }
    return petList;
}

.
.
.
.
.
.
.
.
.
.
.
.
.

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  const petList = [];
  return function addpets(pet){
    if (pet) {
      petList.push(pet);
    } else {
      return petList
    }
  }
}

Esta es mi soluciona al reto:

export function createPetList() {
  let petList = [];

  function addPet(newPet) {
    if (newPet) {
      petList.push(newPet);
    }
    else {
      return petList
    }
  }

  return addPet
}

export function createPetList() {
// Tu c贸digo aqu铆 馃憟
const petList = [];
function processPetData(petData) {
if (petData) {
petList.push(petData);
}
return petList;
}
return processPetData;
}

borre el export y siempre me salia error que tortura.

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  let mascotas = [];
  function myPetAc(insertPet) {
    if (insertPet) {
      mascotas.push(insertPet);
    } else {
      return mascotas;
    }
    console.log( mascotas);
  }

  return myPetAc;
}

Mi soluci贸n:

function createPetList() {
  const pets = []
  const addPets = (pet) => {
    if (!pet) {
      return pets
    } else {
      pets.push(pet)
    }
  }
  return addPets
}

Mi soluci贸n al reto

export function createPetList() {
  const petList = [];
  function myPetList(pet) {
    if (!pet) {
      return petList;
    } else {
      petList.push(pet);
    }
  }
  return myPetList;
} 

Mi soluci贸n

export function createPetList() {
  let list = [];
  return function adding(pet) {
    if (pet) {
      list.push(pet);
    } else {
      return list,
    }
  }

}

Les comparto mi solucion, al parecer el desafio requiera que se retorne la lista si no se introducen datos el parametro.

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  let petList = []
  function addPet(pet) {
    if (pet !== undefined) {
      petList.push(pet)
    } else {
      return petList
    }
  }
  return addPet;
}

const myPetList = createPetList();

myPetList("michi");

myPetList("firulais");

Mi solucion:

export function createPetList() {
  const petList = [];
  function addPet(NewPet) {
    if (NewPet) {
      petList.push(NewPet);
    }
    return petList;
  }
  return addPet;
}

**Mi soluci贸n **

export function createPetList() {
  let petList = [];
  function addPetToList(name = '') {
    if (name == '') {return petList;}
    petList.push(name);
  }
  return addPetToList;
}

function createPetList() {
  let pets = [];

  function addPet(pet) {
    if (pet) {
      pets.push(pet);
    } else {
      return pets;
    }
  }

  return addPet;
}

const myPetList = createPetList();

Explicaci贸n:

Creamos una funci贸n que devuelve un closure. La variable pets se inicializa con un array vac铆o y se devuelve una funci贸n que tiene acceso a esta variable mediante un closure. La funci贸n interna addPet comprueba si se le ha pasado un argumento, si es as铆, lo a帽ade al array de pets. Si no se pasa ning煤n argumento, devuelve la lista completa de mascotas.

Aqu铆 va mi soluci贸n al playground utilizando closures:

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  let list = [];
  const addPet = (pet) => {

    pet ? list.push(pet) : ''
    console.log(list);

    return list;
  }
  return addPet;
}

const myPetList = createPetList();

myPetList("michi");

myPetList("firulais");

Gracias profesor Oscar Barajas

C贸digo al m铆nimo.

export const createPetList = () => {
  const petList = []
  return (pet) => {
    pet && petList.push(pet)
    return petList
  }
}

A煤n tengo dudas 馃槮

mi playgrounds

export function createPetList() {
  let list = []
  return (pet = "") => {
    if (pet == "") return list
    list.push(pet)
  }
}

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  const petList = []
  return function (newPet) {
    if (newPet) {
      petList.push(newPet)
    } else {
      return petList
    }
  }
}

That one

export function createPetList() {
  const pets = [];
  return function addPets(newPet = "") {
    if (newPet == "") {
      return pets;
    } else {
      pets.push(newPet)
    }
  }
}



Listo

export function createPetList() {
  let pets = [];
  let pet;
  function addPets(pet) {
    if (pet){
      return pets.push(pet);
    }
    else {
      return pets;
    }
  }
  return addPets;
}
function createPetList() {
    const petList = [];
  
    function petListCreate(nuevo) {
        if (nuevo!=undefined){
            petList.push(nuevo);
        }else{
            console.log(petList);

        }    
      
      
      
    }
    return petListCreate;
}

const myPetList = createPetList();

myPetList("michi");

myPetList("firulais");

myPetList();

viendo los comentarios me di cuenta que no era necesario especificar !=undefined ya que el solo par谩metro dar铆a falso si no se ingresa

Pues鈥 c贸mo que me confund铆 un poco con las instrucciones pero bueno, al final de cuentas s铆 pas贸 las pruebas:

export function createPetList() {
  const lista = [];
  function addData(value) { 
    value ? lista.push(value) : null;
    if (value) {
      return;
    } else {
      return lista;
    }
  }
  return addData;
}

Mi solucion a este Playground:

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  let petList = [];
  return function addPet(pet) {
    if (pet) {
      petList.push(pet);  
    }
    return petList;
  }
}

function createPetList() {
    let petList = [];

    function saveDataPets(myPet) {
        petList.push(myPet)
        if(petList[petList.length -1] === undefined) petList.pop()
        
        return petList
    }

    return saveDataPets;
}

const myPetList = createPetList()

Al solucionar el ejercicio me encontre despues de unos minutos que estaba fallando en la comparaci贸n del ciclo if, tratando de asegurarme que el parametro string no estuviera vacio. 鉂

Con el simple hecho de colocal la variable 鈥榩et鈥 para su evaluaci贸n, logre resolverlo. 馃馃徎馃挍

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  const petArr = [];

  function addPet(pet) {
    if (pet) {
      petArr.push(pet);
    } else {
      return petArr;
    }
  }

  return addPet;
}

const myPetList = createPetList;
myPetList('michi');
myPetList('firulais');
myPetList('pajaro');
myPetList();
<function createPetList() {
    let myPetList = []

    function namePet(namePet) {
        if (namePet) {
            myPetList.push(namePet)
        } else {
            console.log(myPetList)
        }
    }
    return namePet
}

const myPetList = createPetList();

myPetList("michi");myPetList("firulais");
myPetList();
export function createPetList() {
  const listedData = [];
  return function addPets(petData) {
    if (petData) {
      listedData.push(petData)
    } else {
      return listedData;
    }
  }
}
export function createPetList() {
  const pets = [];
  return function addPet(pet) {
    if (pet) {
      pets.push(pet)
    } else {
      return pets;
    }
  }
}

MI codigo mas peque帽o. utilizando arrow functions y operador ternario

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  let myList = []
  return (animal) => animal ? myList.push(animal) : myList
}

Mi Solucion 馃槑

function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  let myPets = [];
  return (myPet) => (myPet) ? myPets.push(myPet) : myPets
}

Dios javascript es demasiado cool o yo soy demasiado cool? XD

export function createPetList() {
  const petList = []
  return (pet) => pet ? petList.push(pet) : petList
}

ez

export function createPetList() {
  let mascotas = [];
  return function agregarMascotas(mascota) {
    if (mascota) {
      mascotas.push(mascota);
    } else {
      return mascotas;
    }
  }
}

Mi aporte, por fin comprend铆 los closures, me siento contento.

export function createPetList() {
    let petArray = [];
    function getPet(pet) {
      const operation = pet != undefined ? petArray.push(pet) : console.log(petArray);
      return petArray;
    }
    return getPet;
}

Ac谩 le dejo mi soluci贸n al reto.

export function createPetList() {
  let animalsList = [];
  return function newAnimals(animals) {
    if (typeof animals === "string" || typeof animals === "object" || typeof animals === "array") {
      return animalsList.push(animals);
    } else {
      return animalsList;
    }
  }
}

Dejo la solucion:

function createPetList() {
  const elements = [];
  return function savePetList(item = null) {
    if (item) {
      elements.push(item);
      return 'Elemento agregado con exito';
    } else {
      return elements;
    }
  }
}

const pets = createPetList();

console.log(pets('perro'));
console.log(pets('gato

Les comparto mi soluci贸n

function createPetList() {
    let existentPet = [];

    return function newPetList(pet){
        if(!existentPet || !!pet){
            existentPet.push(pet);
        }else{
            console.log(existentPet)
        }
        return existentPet;
    }
}

const kevPet = createPetList();

kevPet("Cat");
kevPet("Dog");
kevPet();
export function createPetList() {
  const list = []
  return function (item) {
    if (!item) return list
    list.push(item)
  }
}

Mi soluci贸n con Arrow Funtion:

Codigo

function createPetList() {
  let petList = []
  function accumPets(pet=null) {
    if (!pet){
      return petList
    }
    petList.push(pet)
  }
  return accumPets
}
export function createPetList() {
  let arrayPetList = [];

  function addPetList(animals) {

    if (!animals) {
      return arrayPetList;
    }

    arrayPetList.push(animals);


  }

  return addPetList;
}

export function createPetList() {
const petList = [];
return function addPet(myPet) {
return myPet ? petList.push(myPet) : petList;
}
}

function createPetList() {
let petList = [];
function addPets(pets) {
petList.push(pets);
console.log(petList);
}
return addPets;
}

const myPetList = createPetList();

myPetList(鈥淢ichi鈥);
myPetList(鈥淔irulais鈥);

Peque帽o momento de satisfaccion!

Abajo como lo resolvi, con dos alternativas:

Alt 1:
export function createPetList() {
  let petList = [];
  return (obj) => obj ? petList.push(obj) : petList;
}

Alt 2
function createPetList() {
let petList = [];
return function addElement(obj) {
  if (!obj) {
    return petList;
  }
  return petList.push(obj);
}
}
export function createPetList() {
  let saveNamePet = [];
  function addNamePet(name) {
    saveNamePet.push(name);
    console.log(`Las Mascotas que hay son: ${saveNamePet}`)
  }
  return addNamePet();
}
const myPetList = createPetList();

myPetList("michi");

myPetList("firulais");

myPetList();

Este ejercicio si me costo un poco, pero con un poco de practica y analisis se logro

Mi solucion:

export function createPetList() {
  const mascotas = []
  return function agregarMascota(mascota) {
    let item = mascota
    return item ? mascotas.push(item) : mascotas
  }
}

Aqui esta mi solucion de la prueba:

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  const myList = [];

  return function addPets(infoPets) {
    if (infoPets) {
      myList.push(infoPets);
      return;
    }

    return myList;
  }
}

Esta fue mi soluci贸n

function createPetList() {
    let petList = [];
  
    function addPet(myPet) {
        if (myPet) {
            petList.push(myPet);
            console.log( petList)
        }  
    }
    return addPet
  }
  const myPetList = createPetList();
  myPetList("michi");
  myPetList("firulais");
  myPetList();
  myPetList("Dinosaurio");
export function createPetList() {
  // Tu c贸digo aqu铆 
  let listData = [];
  function adddata(datamascota) {
    if (datamascota) {
      listData.push(datamascota)
    }
    return listData
  }  
  return adddata
}

Mi soluci贸n:

export function createPetList() {
  let list = [];
   return function internal(item) {
    if (!item) {
      return list;
    }
    list.push(item);
  }
}

Me corre bien pasando objetos, array, o no pasando par谩metros, pero el compilador no me lo acepta.

![](

Fallo el compilador

export function createPetList() {
  // Tu c贸digo aqu铆 馃憟
  let lista = [];

  return function guardar(nombre) {

    if (nombre) { 
      lista.push(nombre);
      return lista;
    }
    return lista;
  }
}
undefined