Uso práctico de Set, Map, WeakSet, WeakMap y Symbol.
Set
- Colección de valores únicos, ideal para eliminar duplicados.
Ejemplo:
javascript
1const numeros = [1, 2, 2, 3]; 2const unicos = new Set(numeros); 3console.log([...unicos]); // [1, 2, 3] - Operaciones comunes:
add,has,delete,size. Ejemplo:javascript1const tags = new Set(); 2tags.add("js"); 3console.log(tags.has("js")); // true 4tags.delete("js"); 5console.log(tags.size); // 0 - Casos de uso: listas únicas, tracking de visitados.
Ejemplo:
javascript
1const visitados = new Set(); 2visitados.add("/home"); 3if (!visitados.has("/perfil")) visitados.add("/perfil");
Map
- Diccionario avanzado con claves de cualquier tipo.
Ejemplo:
javascript
1const roles = new Map(); 2roles.set(1, "admin"); 3roles.set(2, "user"); 4console.log(roles.get(1)); // "admin" - Mantiene el orden de inserción y es eficiente en accesos frecuentes.
Ejemplo:
javascript
1const config = new Map([ 2 ["theme", "dark"], 3 ["lang", "es"], 4]); - Casos de uso: cache, conteo de frecuencias, config avanzada.
Ejemplo:
javascript
1const palabras = ["hola", "hola", "js"]; 2const frec = new Map(); 3for (const p of palabras) { 4 frec.set(p, (frec.get(p) || 0) + 1); 5}
WeakSet y WeakMap
- Colecciones con referencias débiles, ideales para evitar fugas de memoria.
Ejemplo:
javascript
1const vistos = new WeakSet(); 2const obj = { id: 1 }; 3vistos.add(obj); - Uso en metadatos privados o tracking de objetos temporales.
Ejemplo:
javascript
1const privados = new WeakMap(); 2class Usuario { 3 constructor(nombre) { 4 privados.set(this, { nombre }); 5 } 6}
Symbol
- Identificadores únicos para propiedades privadas o claves especiales.
Ejemplo:
javascript
1const ID = Symbol("id"); 2const user = { nombre: "Ana", [ID]: 123 }; 3console.log(user[ID]); // 123
Ejemplos de Código
3 ejemplos
Duplicados con Set
javascript
1const numeros = [1, 2, 2, 3, 3, 4];
2const unicos = [...new Set(numeros)];Frecuencias con Map
javascript
1const palabras = ["hola", "hola", "js"];
2const frec = new Map();
3
4for (const p of palabras) {
5 frec.set(p, (frec.get(p) || 0) + 1);
6}Datos privados
javascript
1const privados = new WeakMap();
2class Usuario {
3 constructor(nombre) {
4 privados.set(this, { nombre });
5 }
6}Recursos
3 recursos disponibles
¡Hora de Practicar!
PrácticaIntermedio1 min🟡 IA con bitácora
Práctica guiada - Inventario con Map y Set
Práctica
Crear un inventario con productos en Map y categorías únicas en Set, con conteo y filtrado.
Desafío de Código
EjercicioIntermedio15 min🔴 Sin IA
Ejercicios - Estructuras modernas
Ejercicios
(1) Eliminar duplicados, (2) contar frecuencias de palabras, (3) experimentar con WeakMap.
Taller Práctico
TallerIntermedio15 min🟡 IA con bitácora
Proyecto de la semana
Proyecto
Sistema de gestión de estudiantes con Map/Set, filtros, reportes y estadísticas básicas.