Map y Set
Más allá de los objetos y arrays, JavaScript ofrece dos estructuras especializadas.
Map: pares clave-valor
Un Map asocia claves con valores. A diferencia de un objeto normal,
sus claves pueden ser de cualquier tipo (incluso objetos o funciones) y
recuerda el orden de inserción.
const stock = new Map();
stock.set("manzanas", 50);
stock.set("peras", 30);
console.log(stock.get("manzanas")); // 50
console.log(stock.has("peras")); // true
console.log(stock.size); // 2
stock.delete("peras");
Puedes recorrerlo fácilmente:
for (const [fruta, cantidad] of stock) {
console.log(fruta, cantidad);
}
Set: valores únicos
Un Set es una colección de valores sin duplicados.
const etiquetas = new Set(["js", "web", "js"]);
console.log(etiquetas.size); // 2 (el duplicado se ignora)
etiquetas.add("css");
console.log(etiquetas.has("web")); // true
Un truco habitual: eliminar duplicados de un array.
const unicos = [...new Set([1, 1, 2, 3, 3])]; // [1, 2, 3]
¿Cuándo usar cada uno?
Map: cuando necesitas un diccionario con claves no-string o con orden.Set: cuando solo te importa la pertenencia y la unicidad.
Ejemplos
Contar frecuencias con Map
const palabras = ["sol", "mar", "sol", "luz", "mar", "sol"];
const conteo = new Map();
for (const p of palabras) {
conteo.set(p, (conteo.get(p) || 0) + 1);
}
console.log([...conteo.entries()]);
Unión de dos conjuntos con Set
const a = new Set([1, 2, 3]);
const b = new Set([3, 4, 5]);
const union = new Set([...a, ...b]);
console.log([...union]);