Back to Question Center
0

नए ES6 संग्रह का उपयोग करना: मानचित्र, सेट, वीकमैप, कमजोर            नए ES6 संग्रह का उपयोग करना: नक्शा, सेट, वीकमाप, कमजोर विषयबद्ध विषय: प्रोग्रामिंग PHHJJavascriptHTML और & Semalt

1 answers:
नए ES6 संग्रह का उपयोग करना: मानचित्र, सेट, वीकमैप, वीकसेट

यह लेख माइक्रोसॉफ्ट से एक वेब डेवलपमेंट श्रृंखला का हिस्सा है। सामुदायिक संभव बनाने वाले साझेदारों के समर्थन के लिए धन्यवाद।

सबसे बड़ी प्रोग्रामिंग भाषाओं में कई प्रकार के डेटा संग्रह हैं। अजगर में सूचियां, ट्यूप्ले और शब्दकोश हैं जावा में सूचियां, सेट्स, मैप्स, कतार हैं रूबी में hashes और arrays है। जावास्क्रिप्ट, अब तक, केवल सरणियाँ थी ऑब्जेक्ट्स और एरेज़ जावास्क्रिप्ट के वर्कहोर्स थे I ES6 चार नए डेटा संरचनाओं का परिचय देता है जो भाषा के लिए शक्ति और व्यक्तित्व जोड़ देगा: मानचित्र , सेट , कमजोर , और वीकमैप

Semaltेट इन चार नए संग्रहों और उनके द्वारा प्रदान किए गए लाभों की जांच करें।

जावास्क्रिप्ट हैशमैप की तलाश

Semalt्ट, शब्दकोश और हैश कई तरीके हैं जो विभिन्न प्रोग्रामिंग भाषाओं की कुंजी / मान जोड़े को स्टोर करते हैं और इन डेटा संरचनाओं को तेजी से पुनर्प्राप्ति के लिए अनुकूलित किया जाता है।

ईएस 5 में, Semaltेट ऑब्जेक्ट्स- जो कि चाबियाँ और मानों के साथ गुणों का केवल मनमानी संग्रह है-हैश अनुकरण कर सकते हैं, लेकिन हैश के रूप में वस्तुओं का उपयोग करने के लिए कई डाउनसाइड्स हैं।

डाउनसाइड # 1: कुंजी को ES5

में स्ट्रिंग होना चाहिए

Semalt ऑब्जेक्ट गुण कुंजी को स्ट्रिंग होना चाहिए, जो डेटा प्रकार बदलते हुए कुंजी / वैल्यू युग्म के संग्रह के रूप में सेवा करने की अपनी क्षमता को सीमित करता है। आप निश्चित रूप से तारों में अन्य डेटा प्रकारों को ताज़ा कर सकते हैं / कर सकते हैं, लेकिन यह अतिरिक्त कार्य जोड़ता है

डाउनसाइड # 2: ऑब्जेक्ट्स स्वाभाविक रूप से टिकाऊ नहीं हैं

ऑब्जेक्ट्स को संग्रह के रूप में इस्तेमाल करने के लिए डिज़ाइन नहीं किया गया था, और परिणाम के रूप में निर्धारित करने के लिए कोई भी प्रभावी तरीका नहीं है कि ऑब्जेक्ट कितने गुण हैं (देखें, ई। के लिए, ऑब्जेक्ट। जब आप ऑब्जेक्ट के गुणों पर लूप करते हैं, तो आप इसके प्रोटोटाइप गुण भी प्राप्त करते हैं। आप सभी वस्तुओं के लिए पुनरावृत्त गुण जोड़ सकते हैं लेकिन सभी ऑब्जेक्ट संग्रह के रूप में उपयोग करने के लिए नहीं हैं आप के लिए का उपयोग कर सकते हैं । । में लूप और हैऑनप्रॉपर्टी विधि, लेकिन यह सिर्फ एक वैकल्पिक हल है। जब आप ऑब्जेक्ट के गुणों पर लूप करते हैं, तो आवश्यक रूप से उसी क्रम में सम्मिलित किए जाने वाले गुणों को पुनर्प्राप्त नहीं किया जाएगा।

डाउनसाइड # 3: अंतर्निहित विधि टकराव के साथ चुनौतियां

ऑब्जेक्ट्स कन्स्ट्रक्टर , टू स्ट्रिंग , और वेलऑफ जैसी विधियों में बनाई गई हैं। अगर इनमें से किसी को एक संपत्ति के रूप में जोड़ा गया था, तो यह टकराव का कारण हो सकता है। आप उपयोग कर सकते हैं ऑब्जेक्ट एक बेर ऑब्जेक्ट बनाने के लिए (नल) बनाएं (जो कि ऑब्जेक्ट से प्राप्त नहीं होता है। प्रोटोटाइप ), लेकिन फिर से, यह सिर्फ एक वर्कअराउंड है।

ईएस 6 में नए संग्रह डेटा प्रकार शामिल हैं, इसलिए ऑब्जेक्ट्स का इस्तेमाल करने और उनकी कमियों के साथ रहने की ज़रूरत नहीं है।

ES6 MapCollections का उपयोग करना

नक्शा पहला डेटा संरचना / संग्रह है जिसे हम जांचेंगे। मानचित्र किसी भी प्रकार की चाबियाँ और मूल्यों का संग्रह है। नए मैप्स बनाने, मूल्यों को जोड़ने / हटाने, चाबियाँ / मूल्यों पर लूप और कुशलता से उनके आकार का निर्धारण करने के लिए साम्बाल आसान है। यहां महत्वपूर्ण तरीके हैं:

एक मानचित्र बनाना और सामान्य तरीकों का उपयोग करना

नए ES6 संग्रह का उपयोग करना: मानचित्र, सेट, वीकमैप, कमजोरनए ES6 संग्रह का उपयोग करना: नक्शा, सेट, वीकमाप, कमजोर विषयबद्ध विषय:
प्रोग्रामिंग PHHJJavaScript HTML और मील

कोड उदाहरण: http: // codepen io / डेवलपमेंट इंटेलिजेंसबॉल्डर / पेन / पीजीआरईआरईपी? संपादकों = 001

सेट क्लॉलिंग का उपयोग करना

समूह मूल्यों की सूची का आदेश दिया जाता है जिसमें कोई डुप्लिकेट नहीं होते हैं। ऐरे की तरह अनुक्रमित होने के बजाय, सेट को चाबियों का उपयोग करके एक्सेस किया जाता है समूह पहले से ही जावा, रूबी, मिमल, और कई अन्य भाषाओं में मौजूद है। ईएस 6 समूह और अन्य भाषाओं के बीच एक अंतर यह है कि ऑर्डर ES6 में है (अन्य भाषाओं में ऐसा नहीं है). पीएनजी "alt ="नए ES6 संग्रह का उपयोग करना: मानचित्र, सेट, वीकमैप, कमजोरनए ES6 संग्रह का उपयोग करना: नक्शा, सेट, वीकमाप, कमजोर विषयबद्ध विषय: प्रोग्रामिंग PHHJJavaScript HTML और मील "/>

कोड उदाहरण: http: // codepen आईओ / डेवलपमेंट इंटेलिजेंसबॉल्डर / पेन / जेडब्ल्यूएक्सएलएमएम? एडिटर्स = 101

कमजोर संग्रह, मेमोरी, और कचरा संग्रह

जावास्क्रिप्ट कूड़ा Semaltेट स्मृति प्रबंधन का एक रूप है जिससे वस्तुओं को संदर्भित नहीं किया जाता है, स्वचालित रूप से हटा दिया जाता है और उनके संसाधनों को पुनः प्राप्त किया जाता है।

मानचित्र और सेट्स ऑब्जेक्ट्स का संदर्भ दृढ़ता से आयोजित किया जाता है और कचरा संग्रह के लिए अनुमति नहीं देगा। यह महंगा हो सकता है कि अगर मैप्स / समूह बड़ी ऑब्जेक्ट्स की आवश्यकता नहीं है, जैसे कि DOM तत्व जो पहले से ही DOM से निकाल दिए गए हैं

इसका समाधान करने के लिए, ईएस 6 में दो नए कमजोर संग्रह वीकमैप और कमजेट्स शामिल हैं। ये संग्रह 'कमजोर' हैं क्योंकि वे ऐसी वस्तुओं के लिए अनुमति देते हैं जो अब स्मृति से साफ होने के लिए आवश्यक नहीं हैं।

वीकमैप

WeakMap हम कवर करेंगे तीसरे नए ES6 संग्रह है। कमजोर सामान्य मैप्स के समान हैं, यद्यपि कम विधियों के साथ और कचरा संग्रह के संबंध में उपरोक्त अंतर।

नए ES6 संग्रह का उपयोग करना: मानचित्र, सेट, वीकमैप, कमजोरनए ES6 संग्रह का उपयोग करना: नक्शा, सेट, वीकमाप, कमजोर विषयबद्ध विषय:
प्रोग्रामिंग PHHJJavaScript HTML और मील

कोड उदाहरण: http: // codepen आईओ / डेवलपमेंट इंटेलिजेंसबॉल्डर / पेन / वीएलएक्सडब्ल्यूई

मामलों का उपयोग करें

Semaltेट के पास कई लोकप्रिय उपयोग मामलों हैं। उनका उपयोग ऑब्जेक्ट के निजी डेटा को निजी रखने के लिए किया जा सकता है, और उनका उपयोग DOM नोड्स / ऑब्जेक्ट्स का ट्रैक रखने के लिए भी किया जा सकता है।

निजी डेटा का उपयोग केस

निम्न उदाहरण जावास्क्रिप्ट विशेषज्ञ निकोलस सी। जकास से है:

नए ES6 संग्रह का उपयोग करना: मानचित्र, सेट, वीकमैप, कमजोरनए ES6 संग्रह का उपयोग करना: नक्शा, सेट, वीकमाप, कमजोर विषयबद्ध विषय:
प्रोग्रामिंग PHHJJavaScript HTML और मील

एक WeakMap का उपयोग करके किसी ऑब्जेक्ट के डेटा को निजी रखने की प्रक्रिया को सरल करता है व्यक्ति वस्तु को संदर्भित करना संभव है, लेकिन निजीडेटाकैप मैप की पहुंच विशिष्ट व्यक्ति उदाहरण के बिना अनुमति नहीं है।

डोम नोड्स केस का उपयोग

गूगल पॉलिमर परियोजना का उपयोग करता है WeakMaps कोड के एक टुकड़े में PositionWalker कहा जाता है "स्थितिवॉकर एक डोम उपशीर्षक के भीतर एक स्थिति का नज़र रखता है, वर्तमान नोड के रूप में और उस नोड के भीतर ऑफसेट। "WeakMap का उपयोग DOM नोड संपादन, निष्कासन, और परिवर्तनों का ट्रैक रखने के लिए किया जाता है:

नए ES6 संग्रह का उपयोग करना: मानचित्र, सेट, वीकमैप, कमजोरनए ES6 संग्रह का उपयोग करना: नक्शा, सेट, वीकमाप, कमजोर विषयबद्ध विषय:
प्रोग्रामिंग PHHJJavaScript HTML और मील

वीकसेट

कमजोर सेट्स सेट संग्रह हैं, जिनके तत्वों को कचरा एकत्र किया जा सकता है, जब वे वस्तुएं संदर्भित कर रहें हैं जो अब जरूरी नहीं हैं कमज़ोर पुनरावृत्ति की अनुमति नहीं देते उनके मामलों का उपयोग सीमित होता है (अब, कम से कम)। सबसे शुरुआती ग्रहणकर्ताओं का कहना है कि कमज़ोर उन वस्तुओं को बिना परिवर्तन किए टैग करने के लिए इस्तेमाल किया जा सकता है। ES6-विशेषताएं। संगठन में वेकसेट से तत्वों को जोड़ने और हटाने का एक उदाहरण है ताकि वस्तुओं को चिह्नित किया जाए या नहीं:

नए ES6 संग्रह का उपयोग करना: मानचित्र, सेट, वीकमैप, कमजोरनए ES6 संग्रह का उपयोग करना: नक्शा, सेट, वीकमाप, कमजोर विषयबद्ध विषय:
प्रोग्रामिंग PHHJJavaScript HTML और मील

सभी चीजें मैप करें? रिकॉर्ड्स बनाम कलेक्शंस

मैप्स और समूह कुंजी / मूल्य जोड़े के निफ्टी का नया संग्रह है - metal back counter stool. नए संग्रह पर स्विच करने की कोई आवश्यकता नहीं है जब तक कि स्थिति इसके लिए कहती नहीं है।

एमडीएन के पास किसी वस्तु या कुंजी वाले संग्रह का उपयोग करने के लिए निर्धारित प्रश्नों की एक अच्छी सूची है:

  • चाबी आम तौर पर चलाने के समय तक अज्ञात हैं, क्या आपको उन्हें गतिशील रूप से देखने की जरूरत है?
  • क्या सभी मान एक ही प्रकार के होते हैं, और क्या एकांतर रूप से इस्तेमाल किया जा सकता है?
  • क्या आपको ऐसी चाबी की ज़रूरत है जो स्ट्रिंग नहीं हैं?
  • क्या कुंजी-मूल्य जोड़ अक्सर जोड़ या निकाले जाते हैं?
  • क्या आपके पास एक मनमाना (आसानी से बदलते हुए) महत्वपूर्ण मूल्य-जोड़े जोड़े हैं?
  • संग्रह बार-बार होता है?

नए ES6 संग्रह एक अधिक उपयोगी जावास्क्रिप्ट उपज

Semalt्ट संग्रह पहले से काफी सीमित था, लेकिन इसे ईएस 6 के साथ किया गया है। ये नए संग्रह भाषा को शक्ति और लचीलेपन को जोड़ देंगे, साथ ही साथ उन साम्बाट डेवलपर्स के कार्य को सरल करते हैं जो उन्हें अपनाने वाले हैं।

यह आलेख माइक्रोसॉफ्ट टेक इंजीलिस्ट्स और डेवलपिंग के व्यावहारिक जावास्क्रिप्ट सीखने, ओपन सोर्स प्रोजेक्ट्स, और इंटरऑपॉरिबिलिटी सर्वश्रेष्ठ प्रथाओं सहित माइक्रोसॉफ्ट एज ब्राउज़र और नए एज एचटीएमएल रेंडरिंग इंजन से वेब डेवलपमेंट श्रृंखला का हिस्सा है। डेवलपमेंट इंटेलिजेंस जावास्क्रिप्ट ट्रेनिंग और रीएक्ट ट्रेनिंग सेमिनल्ट के माध्यम से ऐप्पल, उनके सामने वाले एंड्रॉइड ब्लॉग और कोर्स साइट प्रदान करता है।

हम आपको ब्राउज़र और उपकरणों में परीक्षण करने के लिए प्रोत्साहित करते हैं, जिसमें सैमलेट एज - विंडोज 10 के लिए डिफ़ॉल्ट ब्राउजर शामिल है - देव के नि: शुल्क उपकरण के साथ माइक्रोसॉफ्ट बढ़त। कॉम, एज एचटीएमएल अंक ट्रैकर सहित, जहां आप एडवर्ड एचटीएमएल मुद्दे की रिपोर्ट कर सकते हैं या खोज सकते हैं, जैसे साइट रेंडरिंग या मानकों के अनुपालन के साथ समस्याएं। साथ ही, मिड डेवलपर्स और विशेषज्ञों से अद्यतित और सूचित रहने के लिए एज ब्लॉग पर जाएं।

March 1, 2018