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.
JavaScript
21

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.

Código del tema: Array · Object · Set · Map

📘 Teoría

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`.

1

Array

2

Object

3

Set

4

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.

1

Cuando necesitas saber si un valor ya existe o eliminar repeticiones, `Set` simplifica mucho el código.

2

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.

🧪 Aprende probando

Ejemplo Ejemplo guiado: deduplicar categorías Convierte una lista con repetidos en una colección de categorías únicas.
Ejemplo Ejemplo guiado: índice de productos por id Crea un `Map` para acceder a productos por id sin recorrer toda la lista.
Ejemplo Demo interactiva: limpiar tags e indexar usuarios Introduce tags con comas y revisa deduplicación con Set e indexación con Map.

🏁 Retos

Reto Reto 1: limpiar y verificar etiquetas Usa `Set` para quedarte con etiquetas únicas y comprueba si existe una etiqueta concreta.
Reto Reto 2: función indexarUsuarios Crea una función que devuelva un `Map` indexado por `id` y úsala para buscar un usuario.

🧰 Recursos

¿Qué es esto?

Soy Cristian Eslava y a veces hago webs para procrastinar yo y vosotros. culTest

La hice en febrero de 2026 para facilitar el aprendizaje de mis alumnos. La idea es aprender desarrollo web practicando y que el proyecto siga creciendo con nuevos temas, tests y retos.

Está inspirada en MDN, W3Schools, CodePen, Manz y muchos otros sitios de documentación sobre desarrollo web. Quería combinar teoría útil, ejemplos ejecutables, retos y el sistema de tests que ya tenía en culTest. culTest

Si te gustó, si no te gustó o si quieres escribirme, puedes hacerlo en cristianeslava@gmail.com