अन्य उत्तर वस्तुओं और Map
s के बीच एक अंतिम अंतर का उल्लेख नहीं करते हैं :
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
}
}
लेकिन अगर आपके पास ऐसी वस्तुओं की एक सरणी है और उन्हें कई स्थानों पर प्रदर्शित करने जा रहे हैं, तो उन सभी को पहले नक्शे में परिवर्तित करना समझ में आता है।