Leer Maps

Una vez que se ha creado un objeto Map y con sus valores anotados necesitamos alguna forma de leer su contenido. Para esto tenemos el método

  • Map.get(clave): devuelve el valor asociado a la clave
  • Map.has(clave): comprueba si existe una clave

Pero Map tiene otros métodos para leer información del objeto como :

  • keys( ): nos devuelve un iterador con la lista de claves
  • values( ): nos devuelve un iterador con la lista de valores
  • entries(): nos da da un iterador con todos los valores almacenados

Como ves todos estos métodos devuelven iteradores, objetos que podremos recorrer o convertir en arrays, por ejemplo

let precios = new Map();

precios.set( 'fecha', new Date('2024/12/31')),

precios.set('patatas', 20);

precios.set('platanos', 25);

console.log(precios.get('patatas') ; //20

Y i quiero sabes si una determinada clave ya existe en el mapa no tenemos que recorrerlo, basta con el método has(clave)

let precios = new Map();

precios.set('patatas', 20);

precios.set('platanos', 25);

if(!precios.has('naranajas'){

   precios.set('naranjas', 35);

}

console.log(precios.get('patatas') ; //20

Este ejemplo usa has para comprobar si ya se han anotado el precio de las naranjas, si no pues lo anota.

Hasta aquí la lectura directa desde el objeto Map usado sus métodos, pero como objeto tiene otras utilidades.

En este primer ejemplo obtenemos todas las claves de un objeto Map

var notas = new Map([

    ['Fisica', 8],

    ['Matematicas', 6],

    ['Historia', 7],

    ['Literatura', 6]

]);

console.log(notas.keys()) ;

//MapIterator {'Fisica', 'Matematicas', 'Historia', 'Literatura'}

console.log(notas.keys().toArray()) ;

//(4) ['Fisica', 'Matematicas', 'Historia', 'Literatura'] 

En este ejemplo el objeto se crea con los pares clave valor, y luego leemos todas las claves como un iterador,fácilmente convertible en Array.

Algo parecido pero con los valores

var turnos = new Map([

    ['Lunes', 'María'],

    ['Miércoles', 'Pedro'],

    ['Viernes', 'Marta']

]);

console.log(notas.values()) ;

//MapIterator {'María', 'Pedro', 'Marta'}

Y como objeto iterable que es podemos recorrer un Map con el método

  • forEach(callback, argThis*).

Este método necesita como primer argumento una función callback la función que se aplicará a cada elemento del objeto cuando se recorra este. El segundo argumento es opcional, sería un objeto al que se accedería son this dentro de la función callback

let misDatos= new Map([

   ['nombre', 'Ana'],

   ['edad', 25],

   ['pais', 'España']

]);

// Usar forEach para iterar sobre cada par clave-valor

misDatos.forEach((valor, clave) => {

   console.log(`Clave: ${clave}, Valor: ${valor}`);

});

 

En este sencillo ejemplo recorremos el objeto misDatos con la función de callback consistente en imprimir los valores de cada para almacenado