
Volver a clases
Fundamentos de Programación●●Intermedio
Set, Map y Nuevas Estructuras de Datos
120 min
0 vistas
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
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
Ejercicios - Estructuras modernas
Ejercicios
(1) Eliminar duplicados, (2) contar frecuencias de palabras, (3) experimentar con WeakMap.
Taller Práctico
TallerIntermedio15 min
Proyecto de la semana
Proyecto
Sistema de gestión de estudiantes con Map/Set, filtros, reportes y estadísticas básicas.