Las otras respuestas no mencionan una última diferencia entre objetos Map
ys:
El Map
objeto contiene pares clave-valor y recuerda el orden de inserción original de las claves .
Por lo tanto, al iterar sobre él, un objeto Map devuelve claves en orden de inserción.
Cita de MDN , énfasis mío
Esta fue la razón principal por la que decidí usar Map
por primera vez en un proyecto reciente. Tenía un objeto normal que necesitaba mostrar en un <table>
, con cada propiedad yendo en una fila específica.
let productPropertyOrder = [ "name", "weight", "price", "stocked" ];
let product =
{
name: "Lasagne",
weight: "1kg",
price: 10,
stocked: true
}
Escribí una función para transformar un objeto en un Map
orden de teclas deseado:
function objectToMap( obj, order )
{
let map = new Map();
for ( const key of order )
{
if ( obj.hasOwnProperty( key ) )
{
map.set( key, obj[ key ] );
}
}
return map;
}
Luego, el mapa podría repetirse en el orden deseado:
let productMap = objectToMap( product, productPropertyOrder );
for ( const value of productMap.values() )
{
let cell = document.createElement( "td" );
cell.innerText = value;
row.appendChild( cell );
}
Por supuesto, esto es un poco artificial porque uno podría mostrarse al iterar sobre el orden de las propiedades sin crear un Map
en el proceso:
for ( const key of productPropertyOrder )
{
if ( product.hasOwnProperty( key ) )
{
let value = product[ key ];
// create cell
}
}
Pero si tiene una variedad de tales objetos y los va a mostrar en muchos lugares, entonces convertirlos a mapas primero tiene sentido.