Map, Set y sus primos débiles en JavaScript
Map acepta cualquier clave y recuerda el orden de inserción; WeakMap no retiene referencias.
const byObject = new Map();
const key = { id: 1 };
byObject.set(key, "object key").set("id", "string key");
console.log(byObject.get(key), byObject.size, [...byObject.keys()].length);
const seen = new Set([1, 2, 2, 3]);
console.log(seen.size, seen.has(2), [...seen]);
const a = new Set([1, 2, 3]);
const b = new Set([2, 3, 4]);
console.log([...a].filter((x) => b.has(x)));
const cache = new WeakMap();
cache.set(key, { computed: true });
console.log(cache.has(key), cache.get(key).computed);
Cómo funciona
- Una clave objeto en un objeto plano se vuelve cadena; en un Map, no.
Setdeduplica conSameValueZero.- Una entrada de
WeakMapdesaparece cuando su clave es recolectada.
Palabras clave y builtins usados aquí
MapSetWeakMapconst
El intento, en números
- Líneas
- 15
- Caracteres a escribir
- 494
- Tokens
- 194
- Ritmo de tres estrellas
- 95 tpm
Al ritmo de tres estrellas de 95 tokens por minuto, este intento toma unos 123 segundos.
Paso 4 de 8 en Objetos y colecciones; paso 30 de 43 en Fundamentos del lenguaje.