Les autres réponses ne mentionnent pas une dernière différence entre les objets et Map
s:
L' Map
objet contient des paires clé-valeur et mémorise l'ordre d'insertion d'origine des clés .
Ainsi, lors de son itération, un objet Map renvoie les clés dans l'ordre d'insertion.
Citation de MDN , mon accentuation
C'est la raison principale pour laquelle j'ai décidé d'utiliser Map
pour la première fois un projet récent. J'avais un objet normal que je devais afficher dans un <table>
, avec chaque propriété allant dans une ligne spécifique.
let productPropertyOrder = [ "name", "weight", "price", "stocked" ];
let product =
{
name: "Lasagne",
weight: "1kg",
price: 10,
stocked: true
}
J'ai écrit une fonction pour transformer un objet en Map
fonction d'un ordre de clé souhaité:
function objectToMap( obj, order )
{
let map = new Map();
for ( const key of order )
{
if ( obj.hasOwnProperty( key ) )
{
map.set( key, obj[ key ] );
}
}
return map;
}
Ensuite, la carte pourrait être itérée dans l'ordre souhaité:
let productMap = objectToMap( product, productPropertyOrder );
for ( const value of productMap.values() )
{
let cell = document.createElement( "td" );
cell.innerText = value;
row.appendChild( cell );
}
Bien sûr, ceci est un peu artificiel car on pourrait tout aussi bien afficher lors d'une itération sur l'ordre des propriétés sans créer Map
de processus en cours:
for ( const key of productPropertyOrder )
{
if ( product.hasOwnProperty( key ) )
{
let value = product[ key ];
// create cell
}
}
Mais si vous avez un tableau de ces objets et que vous les affichez à plusieurs endroits, il est alors logique de les convertir tous en cartes.