Array vs Object vs Set vs Map: elegir estructura correcta
Aprende a seleccionar la estructura de datos adecuada según tu objetivo: listas ordenadas, diccionarios simples, claves únicas o claves de cualquier tipo.
Elegir bien la estructura de datos es una decisión de diseño, no un detalle menor de sintaxis.
`Array` brilla cuando importa el orden; `Object` para diccionarios simples; `Set` para valores únicos; `Map` para pares clave/valor más flexibles.
Cuando eliges mal, el código se complica: más conversiones, más condicionales y peor rendimiento percibido.
Objetivo de esta lección: desarrollar criterio para escoger estructura según operaciones reales de producto.
- Primero piensa en la operación dominante: recorrer, buscar, deduplicar o indexar.
- No hay una estructura universalmente mejor. La correcta depende de cómo se usan los datos durante el ciclo de vida de la funcionalidad.
- Si necesitas acceso por índice usa `Array`; si necesitas unicidad usa `Set`; si necesitas claves complejas y tamaño fiable usa `Map`.
- Son básicos, pero cubrirán gran parte de tu trabajo diario si los aplicas bien.
- `Array` encaja para secuencias donde el orden importa: historial, feed, productos, resultados de búsqueda.
Modelo mental para decidir rápido
Primero piensa en la operación dominante: recorrer, buscar, deduplicar o indexar.
No hay una estructura universalmente mejor. La correcta depende de cómo se usan los datos durante el ciclo de vida de la funcionalidad.
Si necesitas acceso por índice usa `Array`; si necesitas unicidad usa `Set`; si necesitas claves complejas y tamaño fiable usa `Map`.
Cuándo usar Array y cuándo Object
Son básicos, pero cubrirán gran parte de tu trabajo diario si los aplicas bien.
`Array` encaja para secuencias donde el orden importa: historial, feed, productos, resultados de búsqueda.
`Object` encaja para representar una entidad concreta con propiedades estables (`usuario`, `config`, `estado`).
- No uses object para simular lista numérica.
- No uses array para campos nombrados de una entidad.
- Piensa si tu interfaz recorre por índice o accede por clave semántica.
- Mantén tipos de datos consistentes dentro de la misma colección.
Set: unicidad sin lógica extra
Evita `if` repetidos para detectar duplicados.
Cuando necesitas saber si un valor ya existe o eliminar repeticiones, `Set` simplifica mucho el código.
Además de deduplicar arrays, es útil para estados de selección, permisos activos o IDs vistos durante paginación.
Map: índices rápidos y claves avanzadas
Ideal para búsquedas frecuentes por clave y para claves no string.
Si haces muchas búsquedas por id (`get`, `has`), `Map` suele ser más claro y directo que recorrer arrays cada vez.
También permite usar objetos como clave, algo útil en cachés o relaciones entre entidades en memoria.
- `Map` expone `.size` real sin cálculos extra.
- Sus métodos (`set/get/has/delete`) expresan intención de forma clara.
- Funciona mejor que object cuando las claves no son strings.
- Útil para cache local y lookup tables en UI compleja.
Checklist de decisión para producción
Antes de codificar, responde estas 4 preguntas.
Definir estructura al inicio reduce refactors dolorosos cuando la feature crece y llegan nuevos requisitos de negocio.
Aplicar este checklist te ayuda a mantener el código más simple, expresivo y fácil de testear.
- ¿Necesito mantener orden y recorrer elementos? -> Array.
- ¿Represento una entidad con propiedades nombradas? -> Object.
- ¿Necesito valores únicos y membership rápido? -> Set.
- ¿Necesito pares clave/valor con claves flexibles o lookup intensivo? -> Map.