CodeForge

JavaScript de Cero a Experto / Strings, números y fechas

Reto: el recibo perfecto

Reto30 min60 XP

El módulo completo en una sola pieza: vas a generar el recibo mensual de "Mi Bolsillo" con columnas alineadas, plata en formato colombiano, la fecha en español y una validación con regex. Es exactamente el tipo de salida que producen las apps de verdad — y la produce TU código.

Reto

El recibo perfecto

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

Qué debes construir

Con estos datos de partida:

datos.js
const gastos = [
{ nombre: "Almuerzo", valor: 18000 },
{ nombre: "Bus", valor: 5800 },
{ nombre: "Café", valor: 4500 },
];
const titular = { nombre: "Sara", celular: "3001234567" };

Genera exactamente este recibo en la consola:

terminal

====== MI BOLSILLO ======

Fecha: miércoles, 15 de julio de 2026

-------------------------

Almuerzo....... $ 18.000

Bus............ $ 5.800

Café........... $ 4.500

-------------------------

TOTAL.......... $ 28.300

Celular válido: true

Requisitos:

  1. Formato COP con Intl.NumberFormat (es-CO, moneda COP, sin decimales) — el formateador se crea UNA vez y se reutiliza.
  2. La fecha (new Date(2026, 6, 15) para que la salida sea reproducible) mostrada con Intl.DateTimeFormat y dateStyle: "full".
  3. Columnas alineadas: el nombre con padEnd(15, ".") y el valor ya formateado con padStart(10, " ").
  4. Una función linea que reciba un gasto (con destructuring) y devuelva su renglón — las líneas del recibo salen de map + esa función, no copiadas a mano.
  5. El TOTAL con reduce, mostrado con la MISMA función linea.
  6. Todo el recibo es UN template literal multilínea (los renglones de gastos se unen con join).
  7. Validación regex: el celular del titular contra /^3\d{9}$/, imprimiendo Celular válido: true.

Reglas

  • Cero concatenación con + para armar el recibo: template literals.
  • La plata NUNCA se formatea a mano: solo Intl.
  • La función linea se usa para gastos Y para el total (misma alineación garantizada).

25:00

Cuando estés listo, arranca el reloj.

Qué sigue

Módulo 6 cerrado — y con él, un hito: ya dominas el LENGUAJE. Variables, control, funciones, arrays, objetos, strings, números, fechas y regex: todo lo que JavaScript es en sí mismo. Lo que viene es donde el lenguaje toca la página: el módulo 7 abre el DOM — leer y modificar el HTML desde JavaScript, el poder que convierte documentos en aplicaciones.