003. Maps

Los Maps son objetos que sirven para almacenar conjuntos de valores asociados a manera de objetos. Es como si fuera un objeto primitivo, y tiene algunas características con muy poco uso que iremos viendo.

Crear un Map

La sintaxis a utilizar es la siguiente.

Ejm

let mapa = new Map();

La manera como se obtienen y estableces valores de un Map es muy similar a los getters y setters de una clase orientada a objetos.

Agregar valores

Exiten dos formas de agregar valores.

Ejm

mapa.set("nombre","Francisco");
mapa.set("apellido","Paredes");
mapa.set("Edad":51);
// Pide una llave (clave) y un valor

console.log(mapa);

Número de elementos

Para saber el número de elementos que tiene un Map, utilizamos la propiedad size, al igual que con los Sets.

Ejm

console.log(mapa.size);

Comprobar si existe o no una llave

Utilizamos, al igual que con los Sets, el método has(). Lo hacemos utilizando la siguiente metodología.

Ejm

console.log(mapa.has("email"));
// Devuelve false porque no está creada dicha llave

Leer un solo valor

Para ello tenemos el método get(), de la siguiente forma.

Ejm

console.log(mapa.get("nombre"));
// El parámetro es el nombre de la llave que queremos obtener

Sobreescribir valores

Lo hacemos con el método set() de la siguiente forma.

Ejm

mapa.set("nombre", "Fran");

Eliminar elementos de un Map

Para ello utilizamos el método delete(). Veamos la sintaxis.

Ejm

mapa.delete("apellido");
// Elimina la llave apellido

Recorrer un Map

Al ser un elemento iterable podemos utilizar un forof o un forEach. Veamos un ejm.

Ejm

for(let [key, value] of mapa) {
   console.log(`Llave: ${key} - Valor: ${value}`);
}

Las llaves no han de ser cadenas de texto

Distinto a como ocurre en un objeto normal, con los Maps podemos generar llaves que no sean cadenas de texto. Pueden ser un objeto, un Array, undefined, null, NaN… En la práctica no es aconsejable utilizar este tipo de llaves. Veamos un ejm.

Ejm

mapa.set(19, "Diecinueve");
mapa.set(false, "false");
mapas.set({},{});

Un uso de los Maps es por ejm guardar una colección de datos que puedan estar relacionados, como pueden ser un catálogo

Nota: tanto los Sets como los Maps son tipos de datos complejos, mientras que los Symbols son tipos de datos primitivos.

Inicializar valores

Además del método set(), tenemos una segunda manera, veamos su sintaxis.

Ejm

const mapa2 = new Map([
["nombre", "Francisco"],
["apellido", "Paredes"],
["edad", 51],
[null, «nulo»]

]) console.log(mapa2);

Almacenar llaves y valores

Podríamos en un Array por un lado almacenar la lista de las llaves, y en otro Array almacenar la lista de los valores. Lo podemos hacer gracias a la destructuración y a keys y values. Veamos un ejm.

Ejm

const llavesMapa2 = [...mapa2.keys()];
const valoresMapa2 = [...mapa2.values()];

console.log(llavesMapa2, valoresMapa2);

Nota: los Sets se parecen más a los Arrays mientras que los Maps se parecen más a los objetos.

Scroll al inicio