Le altre risposte non menzionano un'ultima differenza tra oggetti e Map
s:
L' Map
oggetto contiene coppie chiave-valore e ricorda l'ordine di inserimento originale delle chiavi .
Pertanto, quando si scorre su di esso, un oggetto Mappa restituisce le chiavi in ordine di inserimento.
Citazione da MDN , enfasi mia
Questo è stato il motivo principale per cui ho deciso di utilizzare Map
per la prima volta in un recente progetto. Avevo un oggetto normale che dovevo visualizzare in a <table>
, con ogni proprietà che andava in una riga specifica.
let productPropertyOrder = [ "name", "weight", "price", "stocked" ];
let product =
{
name: "Lasagne",
weight: "1kg",
price: 10,
stocked: true
}
Ho scritto una funzione per trasformare un oggetto in un Map
secondo un ordine di tasti desiderato:
function objectToMap( obj, order )
{
let map = new Map();
for ( const key of order )
{
if ( obj.hasOwnProperty( key ) )
{
map.set( key, obj[ key ] );
}
}
return map;
}
Quindi la mappa potrebbe essere ripetuta nell'ordine desiderato:
let productMap = objectToMap( product, productPropertyOrder );
for ( const value of productMap.values() )
{
let cell = document.createElement( "td" );
cell.innerText = value;
row.appendChild( cell );
}
Naturalmente questo è un po 'inventato perché si potrebbe anche visualizzare quando si itera sull'ordine delle proprietà senza creare un Map
nel processo:
for ( const key of productPropertyOrder )
{
if ( product.hasOwnProperty( key ) )
{
let value = product[ key ];
// create cell
}
}
Ma se hai una serie di tali oggetti e li visualizzerai in molti luoghi, allora convertirli tutti in mappe ha senso.