Jawaban lain tidak menyebutkan satu perbedaan terakhir antara objek dan Map
s:
The Map
objek memegang pasangan kunci-nilai dan mengingat urutan penyisipan asli dari kunci .
Jadi, ketika iterasi di atasnya, objek Peta mengembalikan kunci dalam urutan penyisipan.
Kutipan dari MDN , beri penekanan pada saya
Ini adalah alasan utama saya memutuskan untuk menggunakan Map
untuk pertama kalinya dalam proyek baru-baru ini. Saya memiliki objek normal yang perlu saya tampilkan di <table>
, dengan setiap properti berada di baris tertentu.
let productPropertyOrder = [ "name", "weight", "price", "stocked" ];
let product =
{
name: "Lasagne",
weight: "1kg",
price: 10,
stocked: true
}
Saya menulis fungsi untuk mengubah objek menjadi Map
sesuai dengan urutan kunci yang diinginkan:
function objectToMap( obj, order )
{
let map = new Map();
for ( const key of order )
{
if ( obj.hasOwnProperty( key ) )
{
map.set( key, obj[ key ] );
}
}
return map;
}
Maka peta bisa diulangi dalam urutan yang diinginkan:
let productMap = objectToMap( product, productPropertyOrder );
for ( const value of productMap.values() )
{
let cell = document.createElement( "td" );
cell.innerText = value;
row.appendChild( cell );
}
Tentu saja ini sedikit dibuat-buat karena orang bisa juga menampilkan ketika iterating atas urutan properti tanpa membuat Map
dalam proses:
for ( const key of productPropertyOrder )
{
if ( product.hasOwnProperty( key ) )
{
let value = product[ key ];
// create cell
}
}
Tetapi jika Anda memiliki larik objek seperti itu dan akan menampilkannya di banyak tempat, lalu mengonversinya semua menjadi peta terlebih dahulu masuk akal.