JavaScript de Cero a Experto / Objetos
Map y Set: colecciones con superpoderes
Dos problemas aparecen tarde o temprano: "necesito una lista SIN repetidos"
y "necesito un diccionario clave→valor, pero con claves que no son texto".
Para el primero existe Set; para el segundo, Map. Hoy los conoces, con
el truco de deduplicar en una línea incluido.
La lista de invitados
Set: valores únicos
El truco final merece cámara lenta: new Set(array) absorbe el array
descartando repetidos, y el spread [...] lo vuelve a regar en un array
normal. Array → Set → array: duplicados fuera, una línea. Es de los
patrones más usados de JavaScript moderno.
Map: el diccionario serio
¿En qué gana Map a un objeto plano? Claves de cualquier tipo (objetos,
números...), un size directo sin Object.keys().length, recorrido en
orden de inserción garantizado, y agregar/borrar constante sin sorpresas.
Nota honesta: para el 90% de los casos —datos con campos conocidos, como el
gasto de siempre— el objeto plano es lo correcto y lo más simple. Map
brilla cuando las claves son DINÁMICAS (categorías que el usuario inventa,
conteos por palabra) o no son strings. Set, siempre que la palabra
"únicos" aparezca en tu problema. No los fuerces donde no aportan.
Tienes const visitas = ['lu', 'ma', 'lu', 'ju', 'ma'] y quieres saber cuántos días DISTINTOS hubo visitas. ¿Cuál es la forma idiomática?
Mini-reto
En "Mi Bolsillo": del array
["comida", "transporte", "comida", "ocio", "comida", "transporte"]
saca las categorías únicas con el truco del Set. Luego arma un
Map de conteo: recorre el array original y por cada categoría haz
conteo.set(c, (conteo.get(c) ?? 0) + 1) — al final recórrelo imprimiendo
categoria → veces. Acabas de escribir tu primer contador de frecuencias,
un clásico de entrevistas.
Qué sigue
Módulo casi completo: fichas de datos, métodos, desempaque, copias, huecos, JSON y colecciones especiales. Falta lo mejor: ponerlo TODO a trabajar junto. El reto final convierte "Mi Bolsillo" a su versión 2: los gastos dejan de ser números sueltos y se vuelven objetos completos — con nombre, categoría y análisis de verdad.