2014-06-06 5 views
14

जावास्क्रिप्ट Map और Set ऑब्जेक्ट्स iterable objects दोनों हैं। दोनों स्टोर ऑब्जेक्ट [key, value] जोड़ी द्वारा। मैं जानना चाहता हूं कि कब उपयोग करना है? क्या किसी दूसरे पर कोई वरीयता है?जावास्क्रिप्ट मानचित्र ऑब्जेक्ट बनाम सेट ऑब्जेक्ट

+5

जावास्क्रिप्ट में, पूंजीकरण मायने रखता है। कृपया इसे सही तरीके से उपयोग करें। * (मैंने इस अवसर पर आपके लिए संपादित किया है।) * –

उत्तर

27

बशर्ते आप ES6 प्रकारों के बारे में बात कर रहे हों, वे एक ही डेटा संरचना नहीं हैं, भले ही SetMap के साथ लागू किया जा सके।

Map की आपकी परिभाषा सही है, लेकिन Set अद्वितीय मानों का एक संग्रह है, जो एक सरणी के विपरीत है जो डुप्लीकेट हो सकता है।

var array = [1, 2, 3, 3]; 

var set = new Set(array); // Will have [1, 2, 3] 
assert(set.size, 3); 

var map = new Map(); 
map.set('a', 1); 
map.set('b', 2); 
map.set('c', 3); 
map.set('C', 3); 
map.set('a', 4); // Has: a, 4; b, 2; c: 3, C: 3 
assert(map.size, 4); 
+9

मुझे लगता है कि यह स्पष्ट रूप से इंगित करने के लायक है कि एक सेट एक महत्वपूर्ण मूल्य स्टोर नहीं है। यह एक सरणी से भी अलग है जिसमें इसका कोई ऑर्डर नहीं है। –

+0

मैं यह भी जोड़ूंगा: https://medium.com/ecmascript-2015/es6-set-map-weak-a2aeb7e2d384 – Thomas

2

डेवलपर्स आम तौर पर सिर्फ नियमित JavaScript ऑब्जेक्ट का उपयोग करें जब वे नक्शे चाहते हैं।

var obj = {}; 
obj.name= "Anand Deep Singh"; 
console.log(obj.name); //logs "Anand Deep Singh" 

इसी तरह ES6 में, हम सामान्य वस्तु का उपयोग कर सकते हैं।

var map = new Map(); 
map.set("name","Anand Deep Singh"); 
console.log(map.get("name")); //logs "Anand Deep Singh" 

लेकिन ध्यान देने योग्य बात यह है कि एक मानचित्रशाब्दिक वस्तु वाक्य रचना के साथ नहीं बनाया जाता है, और है कि एक सेट और दुकान और पहुँच डेटा करने के लिए तरीकों मिल का उपयोग करता है।

यह एक कुंजी वस्तु में मौजूद है या नहीं, संपूर्ण वस्तु स्पष्ट करने के वस्तु को नष्ट करने और विधि स्पष्ट विधि हटाता है या नहीं की जाँच करने के विधि है है।

सेट मूल्यों की एक अनूठी सूची है। यह बस एक अनूठी सूची है।

var set = new Set(["a", "a","e", "b", "c", "b", "b", "b", "d"]); 
console.log(set); //logs Set {"a", "e", "b", "c", "d"} 

एक सेट को सरणी की तरह एक्सेस नहीं किया जा सकता है, और यह मानचित्र के समान तरीकों को प्रदान करता है।

संबंधित मुद्दे