Crear Objetos Map

Como cualquier otro objeto de Javascript, los objetos de tipo Map puede instanciarse con el operador new. A diferencia de los arrays no se les puede asignar directamente un valor.

let diccionario = new Map();

console.log(diccionario) ;

El constructor puede llevar como argumento cualquier dato  iterable cuyos elementos o entradas sean pares de clave-valor (como un array). Esos items se añaden al objeto creado

var capitales = new Map([

    ['España', 'Madrid'],

    ['Francia', 'Paris'],

    ['Alemania', 'Berlin'],

    ['Italia', 'Roma']

]);

console.log(capitales) ;

En este ejemplo puedes ver la estructura de este tipo de datos: a cada clave le corresponde un valor. A la clave 'España' le corresponde el valor Madrid.

Pero las claves no tienen que ser simplemente números o cadena, pueden cualquier tipo de dato manejado por javascript. En este ejemplo se usa una función como clave y como valor podría ser un metadato para esa función:

function multiplicar(a,b){

    return a*b;

}

let operaciones= new Map([multiplicar, 'Multiplicando'];

console.log(operaciones.get(multiplicar));

Existe un objeto similar al Map, se trata del objeto WeakMap que solo acepta objetos iterables como claves.

Como con los demás objetos en Javascirpt las  variables tipo Map no pueden copiarse mediante asignación, como cualquier otra variable. Una forma de copiar un objeto Map a otro es crear el segundo a partir del primero

let precios = new Map([

    ['Patatas', 2],

    ['Peras', 4],

    ['Manzanas', 3],

    ['Plátanos', 5]

]);

let otraLista = new Map(precios);

console.log(precios);

console.log(otraLista);

El objeto Map no posee un método de ordenación, los items mantienen siempre el orden inicial con el que se crea o se rellena el objeto.