👉 Ver todas las notas
- Es un tipo de estructura de datos
- Nos permite almacenar la información en pares clave-valor
- Las claves son únicas, no se repiten => no tenemos pares clave-valor que se repitan
- Usamos Map principalmente para búsquedas rápidas (de valores asociados)
- Si usamos objetos como diccionarios, estamos limitados por los tipos de valores que podemos tener como claves: sólo podemos usar valores que sean válidos como nombres de propiedades (number o string)
- En un Map puedo usar cualquier tipo de valor como clave (incluyendo objetos y funciones)
- En los objetos, el orden de las propiedades/claves no está garantizado (depende de la implementación del engine). Sólo porque agreguemos pares clave-valor en cierto orden, no implica que van a permanecer en ese orden cuando las iteremos
- En un Map, el orden en el que agregamos las claves se mantiene
- Podemos obtener el tamaño de un Map fácilmente, usando la propiedad
size
- Un Map puede ser iterado directamente
- Map nos provee de ciertos métodos para, entre otras cosas, poder iterar las claves (ej:
forEach
) - Pueden ver otras diferencias con más detalle acá
- Un Map puede tener ventajas de performance en casos donde agreguemos/saquemos pares clave-valor con frecuencia
// crear un nuevo map/diccionario con los pares {"a" => 1, "b" => 2}
const m = new Map();
m.set('a', 1);
m.set('b', 2);
// obtener el tamaño (cantidad de pares mapeados) del diccionario
m.size;
m.clear();
m.delete('a'); // true
m.delete('c'); // false (la clave 'c' no existe en el map)
m.get('a'); // 1
m.get('z'); // undefined (la clave 'z' no existe en el map)
m.has('a'); // true
m.has('z'); // false
m.forEach((key, value) => console.log(`key: ${key} => value: ${value}`));
// también podemos usar for.. of
for(const [key, value] of m) {
console.log(`${key} = ${value}`);
}
// para que funcione, cada elemento del array debe ser un par
const arr = [['a', 1], ['b', 2]];
const m = new Map(arr);
Etc... Ver más en MDN