他の回答では、オブジェクトとMap
sの最後の違いについて言及していません。
Map
オブジェクトは、キーと値のペアを保持し、キーの元の挿入順序を覚え。
したがって、それを反復処理すると、Mapオブジェクトは挿入順にキーを返します。
MDNからの引用、強調鉱山
これが、Map
最近のプロジェクトで初めて使用することにした主な理由でした。に表示する必要がある通常のオブジェクトがあり<table>
、各プロパティは特定の行に移動します。
let productPropertyOrder = [ "name", "weight", "price", "stocked" ];
let product =
{
name: "Lasagne",
weight: "1kg",
price: 10,
stocked: true
}
Map
目的のキーの順序に従って、オブジェクトをに変換する関数を作成しました。
function objectToMap( obj, order )
{
let map = new Map();
for ( const key of order )
{
if ( obj.hasOwnProperty( key ) )
{
map.set( key, obj[ key ] );
}
}
return map;
}
次に、マップを目的の順序で繰り返します。
let productMap = objectToMap( product, productPropertyOrder );
for ( const value of productMap.values() )
{
let cell = document.createElement( "td" );
cell.innerText = value;
row.appendChild( cell );
}
もちろんMap
、プロセス内でを作成せずにプロパティの順序を反復するときに表示することもできるため、これは少し工夫されています。
for ( const key of productPropertyOrder )
{
if ( product.hasOwnProperty( key ) )
{
let value = product[ key ];
// create cell
}
}
ただし、そのようなオブジェクトの配列があり、それらを多くの場所に表示する場合は、それらをすべてマップに変換するのがまず理にかなっています。