Diğer cevaplar nesneler ve nesneler arasındaki son farktan bahsetmiyor Map
:
Map
Nesne anahtarının değer çiftlerini tutan ve şifreler orijinal ekleme talimatı hatırlar .
Bu nedenle, üzerinde yineleme yaparken, bir Map nesnesi, yerleştirme sırasına göre anahtarları döndürür.
MDN'den alıntı , benimkine vurgu
Bu, Map
yeni bir projede ilk defa kullanmaya karar vermemin ana sebebiydi . <table>
Her özellik belirli bir satırda olacak şekilde, a'da görüntülemem gereken normal bir nesnem vardı .
let productPropertyOrder = [ "name", "weight", "price", "stocked" ];
let product =
{
name: "Lasagne",
weight: "1kg",
price: 10,
stocked: true
}
Map
İstenen anahtar sırasına göre nesneyi dönüştürmek için bir işlev yazdım :
function objectToMap( obj, order )
{
let map = new Map();
for ( const key of order )
{
if ( obj.hasOwnProperty( key ) )
{
map.set( key, obj[ key ] );
}
}
return map;
}
Ardından, harita istenen sırada yinelenebilir:
let productMap = objectToMap( product, productPropertyOrder );
for ( const value of productMap.values() )
{
let cell = document.createElement( "td" );
cell.innerText = value;
row.appendChild( cell );
}
Tabii ki bu biraz tartışmalı çünkü bir emir yaratırken münasebet emri tekrarlanırken ortaya çıkabiliyor Map
:
for ( const key of productPropertyOrder )
{
if ( product.hasOwnProperty( key ) )
{
let value = product[ key ];
// create cell
}
}
Ancak, bu tür nesnelerden oluşan bir diziniz varsa ve onları birçok yerde görüntüleyecekseniz, önce hepsini haritalara dönüştürmek mantıklı olur.