Ejercicio: Objetos y JSON
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.
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.
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.