Hasta ahora hemos guardado colecciones de datos con dos estructuras: los arrays y los objetos. Pero JavaScript tiene dos estructuras más que nos resuelven problemas muy concretos: Set y Map.
NotaUn
Setes una colección de valores únicos. UnMapes una colección de pares clave-valor donde la clave puede ser de cualquier tipo.
Los arrays y los objetos son geniales, pero tienen limitaciones:
string o symbol. Si intentas usar un número o un objeto como clave, JavaScript lo convierte a texto.const obj = {}
obj[1] = 'número uno'
obj['1'] = 'texto uno'
console.log(obj) // { '1': 'texto uno' }
// ¡La clave 1 y la clave '1' son la misma!
Set y Map nacen precisamente para cubrir estos casos.
Un Set guarda valores y se asegura de que nunca se repitan:
const numeros = new Set()
numeros.add(1)
numeros.add(2)
numeros.add(2) // este se ignora, ya existe
console.log(numeros) // Set(2) { 1, 2 }
Un Map guarda pares de clave → valor, y la clave puede ser cualquier cosa: un número, un objeto, una función...
const edades = new Map()
edades.set('Dani', 18)
edades.set('Eva', 25)
console.log(edades.get('Dani')) // 18
| Necesito... | Uso |
|---|---|
| Una lista de valores sin duplicados | Set |
| Asociar claves a valores (claves de cualquier tipo) | Map |
| Una colección ordenada con acceso por índice | Array |
| Modelar una entidad con propiedades conocidas | Objeto |
NotaRegla rápida: si te importa la unicidad, piensa en
Set. Si te importa asociar una clave con un valor (sobre todo si la clave no es un string), piensa enMap.
En las siguientes clases veremos cada una en profundidad. ¡Vamos a por ello!