MDN डॉक्स के अनुसार,
Map ऑब्जेक्ट की-वैल्यू पेयर्स रखता है और कीज के मूल इंसर्शन ऑर्डर को याद रखता है। कोई भी मान (ऑब्जेक्ट्स और प्रिमिटिव दोनों) का उपयोग की या वैल्यू के रूप में किया जा सकता है।
यहां ध्यान देने वाली महत्वपूर्ण बात यह है कि ऑब्जेक्ट्स को भी मैप्स में कीज के रूप में उपयोग किया जा सकता है। यह जावास्क्रिप्ट ऑब्जेक्ट्स के साथ संभव नहीं है। JS ऑब्जेक्ट्स केवल प्रिमिटिव्स को कीज के रूप में अनुमति देते हैं।
एक और फीचर जो इसे कुछ परिदृश्यों में उपयोगी बनाता है वह यह है कि यह इटरेबल है। और यह इंसर्शन ऑर्डर में इटरेबल है। इसलिए जिन मामलों में आपको कीज के ऑर्डर को बनाए रखने के साथ-साथ उससे जुड़ा वैल्यू भी चाहिए, वहां मैप का उपयोग किया जा सकता है।
उदाहरण
const myMap = new Map();
const keyString = 'a string';
const keyObj = {};
const keyFunc = function() {};
// सभी प्रकार की कीज के साथ वैल्यू सेट करना
myMap.set(keyString, "String Val");
myMap.set(keyObj, 'Object val');
myMap.set(keyFunc, 'function val');
console.log(myMap.size); // 3
console.log(myMap.get(keyString)); // "String Val"
आउटपुट
3
String Val
मुख्य मेथड्स
const map = new Map();
// सेट/गेट
map.set('key', 'value');
map.get('key');
// चेक/डिलीट
map.has('key');
map.delete('key');
map.clear();
// इटरेबिलिटी
map.forEach((value, key) => {});
for (const [key, value] of map) {}
map.keys(); // कीज इटरेबल
map.values(); // वैल्यूज इटरेबल
map.entries(); // [key, value] पेयर्स
व्यावहारिक उपयोग केस
// 1. DOM एलिमेंट्स को डेटा से मैप करना
const elementData = new Map();
elementData.set(document.getElementById('btn'), { clicks: 0 });
// 2. कैशिंग (ऑब्जेक्ट कीज के साथ)
const cache = new Map();
function expensiveOp(obj) {
if (cache.has(obj)) return cache.get(obj);
const result = compute(obj);
cache.set(obj, result);
return result;
}
// 3. गिनती (बेहतर परफॉरमेंस)
const counts = new Map();
items.forEach(item => {
counts.set(item, (counts.get(item) || 0) + 1);
});