जावास्क्रिप्ट हैशमैप्स: ऑब्जेक्ट्स बनाम मैप ऑब्जेक्ट
जावास्क्रिप्ट में कुछ अन्य भाषाओं की तरह सीधा “हैशमैप” समकक्ष नहीं है। हालाँकि, हम दो प्राथमिक तरीकों का उपयोग करके समान कार्यक्षमता प्राप्त कर सकते हैं: सादे जावास्क्रिप्ट ऑब्जेक्ट्स और बिल्ट-इन Map
ऑब्जेक्ट। यह लेख दोनों का पता लगाता है, उनकी ताकत और कमजोरियों की तुलना करके आपको अपनी आवश्यकताओं के लिए सर्वोत्तम दृष्टिकोण चुनने में मदद करता है।
विषय-सूची
ऑब्जेक्ट्स को हैशमैप्स के रूप में उपयोग करना
जावास्क्रिप्ट ऑब्जेक्ट्स साधारण हैशमैप्स के रूप में कार्य कर सकते हैं। वे संबद्ध मानों तक पहुँचने के लिए स्ट्रिंग कुंजियों का उपयोग करते हैं। यह दृष्टिकोण सरल है लेकिन इसमें सीमाएँ हैं।
उदाहरण:
const myHashMap = {}; // एक खाली ऑब्जेक्ट बनाएँ
// कुंजी-मान जोड़े डालें
myHashMap.apple = 1;
myHashMap.banana = 2;
myHashMap.cherry = 3;
// मानों तक पहुँचें
console.log(myHashMap.banana); // आउटपुट: 2
// जांचें कि क्या कोई कुंजी मौजूद है
console.log('apple' in myHashMap); // आउटपुट: true
// एक कुंजी-मान जोड़ी हटाएँ
delete myHashMap.banana;
// कुंजी-मान जोड़ों पर पुनरावृति करें (नोट: क्रम की गारंटी नहीं है)
for (const key in myHashMap) {
console.log(key, myHashMap[key]);
}
लाभ:
- जावास्क्रिप्ट डेवलपर्स के लिए सरल और परिचित।
- कोई बाहरी निर्भरता नहीं।
नुकसान:
- कुंजियाँ स्ट्रिंग्स (या मान जो स्पष्ट रूप से स्ट्रिंग्स में परिवर्तित होते हैं) तक सीमित हैं।
- कोई अंतर्निहित आकार गुण नहीं; आपको आकार को मैन्युअल रूप से ट्रैक करने की आवश्यकता है।
get
,set
,has
, आदि जैसे अंतर्निहित तरीकों का अभाव।- कुंजी क्रम की गारंटी नहीं है।
Map
ऑब्जेक्ट का उपयोग करना
Map
ऑब्जेक्ट (ES6 में शुरू किया गया) एक अधिक मजबूत समाधान प्रदान करता है। यह किसी भी डेटा प्रकार को कुंजी के रूप में सपोर्ट करता है, प्रकार संक्रमण समस्याओं से बचाता है, और कुशल हेरफेर के लिए अंतर्निहित तरीके प्रदान करता है।
उदाहरण:
const myMap = new Map();
// कुंजी-मान जोड़े डालें
myMap.set("apple", 1);
myMap.set(123, "number"); // कुंजी के रूप में संख्या
myMap.set({ a: 1 }, "object"); // कुंजी के रूप में ऑब्जेक्ट
// मानों तक पहुँचें
console.log(myMap.get("apple")); // आउटपुट: 1
console.log(myMap.get(123)); // आउटपुट: "number"
// जांचें कि क्या कोई कुंजी मौजूद है
console.log(myMap.has("apple")); // आउटपुट: true
// एक कुंजी-मान जोड़ी हटाएँ
myMap.delete("apple");
// आकार प्राप्त करें
console.log(myMap.size); // आउटपुट: 2
// कुंजी-मान जोड़ों पर पुनरावृति करें (क्रम संरक्षित है)
for (const [key, value] of myMap) {
console.log(key, value);
}
लाभ:
- कुंजी के रूप में किसी भी डेटा प्रकार को सपोर्ट करता है।
- अंतर्निहित तरीके प्रदान करता है (
set
,get
,has
,delete
,size
)। for...of
लूप के साथ कुशल पुनरावृत्ति।- प्रविष्टि क्रम को संरक्षित करता है।
नुकसान:
- ES6 संगतता की आवश्यकता है (हालांकि पॉलीफिल उपलब्ध हैं)।
निष्कर्ष
जबकि सादे जावास्क्रिप्ट ऑब्जेक्ट्स साधारण हैशमैप जैसे व्यवहार के लिए पर्याप्त हो सकते हैं, Map
ऑब्जेक्ट को आम तौर पर इसकी बेहतर सुविधाओं और दक्षता के लिए अनुशंसित किया जाता है। जब तक आप ब्राउज़र संगतता से गंभीर रूप से बाधित नहीं हैं, Map
अधिकांश आधुनिक जावास्क्रिप्ट प्रोजेक्ट्स के लिए पसंदीदा विकल्प है।