CodeForge

JavaScript de Cero a Experto / Objetos

Reto: Mi Bolsillo v2, gastos con nombre propio

Reto30 min60 XP

En el módulo 4 analizaste gastos que eran solo números. Hoy "Mi Bolsillo" crece a su versión 2: cada gasto es un OBJETO con nombre, valor y categoría, y tu análisis combina todo el módulo — spread, destructuring, Set, JSON — con los métodos de array que ya dominas.

Reto

Mi Bolsillo v2

Media25 min60 XP(×2 sin mirar la solución)

Qué debes construir

Partiendo de este array de gastos:

datos.js
const gastos = [
{ nombre: "Almuerzo", valor: 18000, categoria: "comida" },
{ nombre: "Bus", valor: 5800, categoria: "transporte" },
{ nombre: "Café", valor: 4500, categoria: "comida" },
{ nombre: "Cine", valor: 25000, categoria: "ocio" },
{ nombre: "Mercado", valor: 92000, categoria: "comida" },
];

Produce exactamente esta salida:

terminal

Total del mes: 160300

Comida: Almuerzo, Café, Mercado (114500)

Gasto más caro: Mercado (92000)

Categorías: comida, transporte, ocio

{

"totalMes": 160300,

"totalComida": 114500,

"masCaro": "Mercado",

"categorias": [

"comida",

"transporte",

"ocio"

]

}

Requisitos:

  1. Agrega un gasto (Taxi, 15000, transporte) con SPREAD, creando un array todos — sin mutar gastos.
  2. Total del mes: reduce sobre todos, con DESTRUCTURING en el callback ((acum, { valor }) => ...).
  3. Análisis de comida: filtra la categoría "comida", saca los nombres con map + destructuring, y su total con reduce.
  4. El más caro: un reduce que compare objetos completos y devuelva el gasto ganador (necesitas su nombre Y su valor).
  5. Categorías únicas: map para extraerlas + el truco del Set.
  6. Resumen final: arma un objeto resumen con totalMes, totalComida, el nombre del más caro y las categorías, e imprímelo con JSON.stringify(resumen, null, 2).

Reglas

  • Nada de bucles a mano: métodos de array con destructuring en los callbacks.
  • gastos no se muta en ningún punto (compruébalo al final si dudas).
  • Las categorías únicas salen del Set — no las escribas a mano.

25:00

Cuando estés listo, arranca el reloj.

Qué sigue

Módulo 5 cerrado: tus datos ya tienen estructura de verdad — objetos con propiedades, métodos, copias seguras y viaje en JSON. El módulo 6 baja al detalle de los VALORES: dominar los strings (plantillas, métodos), los números (formateo colombiano con Intl), las fechas con Date, y una herramienta legendaria para buscar patrones en texto: las expresiones regulares.