Set, Map y Nuevas Estructuras de Datos
Volver a clases
Fundamentos de Programación●●Intermedio

Set, Map y Nuevas Estructuras de Datos

120 min

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:
    javascript
    1const 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.