miguedocs

Objeto Map y su comparación con Object

Map es una colección en JavaScript que almacena pares clave/valor, ofreciendo mejoras en rendimiento y flexibilidad comparado con los objetos tradicionales.

Map

Un Map es un tipo de colección en JavaScript que almacena pares clave/valor. Aunque conceptualmente es similar a un objeto (ambos actúan como una tabla hash), el Map ofrece mejoras importantes en rendimiento, flexibilidad y control.

¿Cuándo usar Map?

  • Cuando las claves no son solo strings (pueden ser números, objetos, funciones, etc.).
  • Cuando necesitamos mantener el orden de inserción de los elementos.
  • Cuando trabajamos con volúmenes de datos grandes y necesitamos eficiencia en operaciones de inserción y borrado.
  • Cuando queremos iterar directamente sin recurrir a métodos estáticos de Object.

Ejemplo práctico

const mapa = new Map();

mapa.set('nombre', 'Leo');
mapa.set(123, 'Número');
mapa.set({ id: 1 }, 'Objeto'); // Clave compleja

console.log(mapa.get('nombre')); // "Leo"
console.log(mapa.size);          // 3

mapa.forEach((valor, clave) => {
  console.log(clave, valor);
});

A diferencia de un objeto literal, el Map nos permite usar cualquier tipo de dato como clave. En un objeto, todas las claves se convierten automáticamente a strings o símbolos.

Ejemplo del problema con objetos tradicionales:

const obj = {};

obj['nombre'] = 'Leo';
obj[123] = 'Número';       // El 123 se convierte en string "123"
obj[{ id: 1 }] = 'Objeto'; // La clave se convierte en "[object Object]"

console.log(obj); // Las claves colisionarán si usamos múltiples objetos como llaves

Métodos y Propiedades Útiles

ElementoTipoDescripción
.set(clave, valor)MétodoAgrega o actualiza una entrada.
.get(clave)MétodoObtiene el valor asociado a la clave.
.has(clave)MétodoVerifica si existe la clave en el mapa.
.delete(clave)MétodoElimina una entrada específica.
.clear()MétodoBorra todo el contenido del mapa.
.values()MétodoDevuelve un iterador con todos los valores.
.sizePropiedadDevuelve la cantidad de elementos actuales.

Comparativa: Object vs. Map

Usar Object cuando:

  • La estructura de datos es simple y las claves son strings fijos.
  • Necesitamos serializar los datos a JSON directamente.
  • Trabajamos con "modelos" o entidades de negocio donde las propiedades están bien definidas.

Usar Map cuando:

  • Necesitamos claves dinámicas o de tipos no-string.
  • Buscamos mayor eficiencia en operaciones frecuentes de adición/borrado.
  • Iteramos habitualmente sobre la colección (Map es iterable nativamente).
  • Queremos evitar colisiones con propiedades heredadas del prototipo de Object.

On this page