Saltar al contenido
Curso de JavaScript
Todos los cursos

Ejercicio: Objetos y JSON

  • ⏱ 40 minutos
  • 📶 Nivel: principiante

Objetivo

Manipular objetos sin modificar los originales: crear, presentar, actualizar con spread, leer con seguridad, agrupar y convertir a JSON.

Antes de empezar

Estas funciones no necesitan una página. Prueba con console.log en el editor y pega tu código en el comprobador.

▶ Prueba tu código aquí (opcional)
Consola

Pasos

Marca cada paso a medida que lo completes. Tu avance se guarda en este navegador.

💡 Pista 1: `cumplirAnios` sin modificar

Con spread: return { ...persona, edad: persona.edad + 1 }; crea un objeto nuevo y deja el original intacto.

💡 Pista 2: `deJSON`

Envuelve JSON.parse(texto) en un try { … } catch { return null; }: un texto inválido lanza una excepción.

🔎 Comprueba tu trabajo

Pega tu código y pulsa Comprobar. La revisión ocurre en tu navegador; nada se envía a ningún sitio. Cada punto en rojo incluye una pista.

    ✅ Ver una solución de ejemplo

    Intenta resolverlo antes de mirar. Tu versión puede ser distinta y también correcta.

    app.js
    function crearPersona(nombre, edad) {
      return { nombre, edad, activa: true };
    }
    
    function presentar({ nombre, edad }) {
      return `${nombre} tiene ${edad} años`;
    }
    
    function cumplirAnios(persona) {
      return { ...persona, edad: persona.edad + 1 };
    }
    
    function ciudadDe(usuario) {
      return usuario?.direccion?.ciudad ?? "sin ciudad";
    }
    
    function total(carrito) {
      return Object.values(carrito).reduce((suma, precio) => suma + precio, 0);
    }
    
    function agruparPorCategoria(productos) {
      const grupos = {};
      for (const { nombre, categoria } of productos) {
        if (!grupos[categoria]) grupos[categoria] = [];
        grupos[categoria].push(nombre);
      }
      return grupos;
    }
    
    function aJSON(objeto) {
      return JSON.stringify(objeto);
    }
    
    function deJSON(texto) {
      try {
        return JSON.parse(texto);
      } catch {
        return null;
      }
    }

    💡 🏁 Reto extra (opcional)

    Escribe fusionar(a, b) que combine dos objetos de forma profunda: si ambos tienen un objeto en la misma clave, se fusionan recursivamente. Pruébalo con configuraciones anidadas.