Colecciones - Maps
¿Qué es un map?
Un map es una colección de clave-valor que pueden ser de cualquier tipo (objetos, funciones, números, etc). El map permite valores duplicados, pero las claves deben ser únicas.
Un map garantiza el orden de insercción de los elementos y proporciona métodos útiles como:
Métodos de un map
- new Map(): Crea un mapa nuevo
- set(key, value): Agrega una clave y valor al mapa
- get(key): Obtiene el valor asociado a esa clave
- has(key): Verifica si la clave existe
- size: Retorna el número de elementos del mapa
- delete(key): Elimina un elemento por clave
- clear(): Elimina todos los elementos del
map
¿En qué casos debería usar un map en vez de un objeto?
- Cuando necesites Claves de cualquier tipo. Los objetos solo permiten cadenas o símbolos como claves, mientras que los
mapspermiten números, objetos, funciones - Orden garantizado: Los
mapsmantienen el orden de insercción de las claves, por lo que lo hace ideal si necesitas recorrer los elementos en el mismo orden de insercción - Mejor rendimiento: Un
mapes más eficiente en términos de tiempo para operaciones comoagregar, buscar o eliminar - Iteración fácil: Un
mapes más fácil de recorrer gracias a métodos comoforEach, keys(), values() y entries(), mientras que un objeto necesita técnicas adicionales.
Ejemplo de uso de map
const myMap = new Map();
// Agregar elementos al mapmyMap.set("name", "John");myMap.set("age", 30);myMap.set("profession", "Developer");
// Acceder a valores del mapaconsole.log(myMap.get("name")); // Output: Johnconsole.log(myMap.get("age")); // Output: 30
// Comprobar si existe alguna claveif (myMap.has("profession")) { console.log("Profession exists in the map!");}
// Obtener tamaño del mapaconsole.log(myMap.size); // Output: 3
// Recorrer el mapa con un buclemyMap.forEach((value, key) => { console.log(`${key}: ${value}`);});
// Eliminar un elementomyMap.delete("age");
// Limpiar todo el mapamyMap.clear();Diferencias principales entre Set y Map:
| Característica | Set | Map |
|---|---|---|
| Formato de datos | Colección de valores únicos | Colección de pares clave-valor |
| Claves | No tiene claves | Claves son únicas |
| Valores | Solo almacena valores | Cada clave tiene un valor asociado |
| Iteración | Itera sobre los valores | Itera sobre claves, valores o ambos |
| Acceso | Solo verifica si un valor existe | Accede a valores mediante claves |
Ejemplo de Set (solo valores):
const mySet = new Set();
mySet.add(1);mySet.add(2);mySet.add(2); // Este duplicado será ignoradomySet.add(3);
console.log(mySet); // Output: Set { 1, 2, 3 }Ejemplo de Map (pares clave-valor):
const myMap = new Map();
myMap.set("a", 1);myMap.set("b", 2);myMap.set("c", 3);myMap.set("a", 4); // Sobrescribe el valor de la clave 'a'
console.log(myMap); // Output: Map { 'a' => 4, 'b' => 2, 'c' => 3 }En resumen:
Set: Una lista de valores únicos, como una bolsa de elementos donde no se repiten.Map: Una tabla de pares clave-valor, como un diccionario.