सेट अब ES2015 (उर्फ ES6, यानी ECMAScript 6) में उपलब्ध हैं। ES6 जून 2015 से जावास्क्रिप्ट के लिए वर्तमान मानक है।
ECMAScript 6 में डेटा संरचना सेट है जो मनमाने मूल्यों के लिए काम करती है, तेज है और NaN को सही ढंग से संभालती है। - एक्सल Rauschmayer , तलाश ES6
एक्सल रौशमायर की पुस्तक एक्सप्लोरिंग ईएस 6 से पहले दो उदाहरण :
एकल तत्वों का प्रबंधन:
> let set = new Set();
> set.add('red')
> set.has('red')
true
> set.delete('red')
true
> set.has('red')
false
सेट का आकार निर्धारित करना और उसे साफ़ करना:
> let set = new Set();
> set.add('red')
> set.add('green')
> set.size
2
> set.clear();
> set.size
0
यदि आप जावास्क्रिप्ट में समूह के बारे में अधिक जानना चाहते हैं, तो मैं ईएस 6 की खोज करूंगा । पुस्तक ऑनलाइन पढ़ने के लिए स्वतंत्र है, लेकिन यदि आप लेखक डॉ। एक्सल रौशमायर का समर्थन करना चाहते हैं, तो आप लगभग 30 डॉलर में पुस्तक खरीद सकते हैं।
यदि आप सेट्स और ES6 का उपयोग करना चाहते हैं, तो अब आप Babel , ES6 से ES5 ट्रांसपिलर, और इसके पॉलीफिल का उपयोग कर सकते हैं ।
संपादित करें: 6 जून, 2017 तक अधिकांश प्रमुख ब्राउज़रों को अपने नवीनतम संस्करणों (IE 11 को छोड़कर) में पूर्ण सेट समर्थन प्राप्त है। इसका मतलब है कि यदि आपको पुराने ब्राउज़रों का समर्थन करने की परवाह नहीं है तो आपको बैबल की आवश्यकता नहीं हो सकती है। यदि आप अपने वर्तमान ब्राउज़र सहित विभिन्न ब्राउज़रों में संगतता देखना चाहते हैं, तो कंगैक्स के ES6 संगतता तालिका की जांच करें ।
संपादित करें:
बस आरंभीकरण पर स्पष्टीकरण। सेट उनके निर्माता में किसी भी तुल्यकालिक पुनरावृत्ति ले सकते हैं। इसका मतलब है कि वे न केवल सरणियां ले सकते हैं, बल्कि तार, और पुनरावृत्तियां भी ले सकते हैं। उदाहरण के लिए एक सेट के निम्नलिखित सरणी और स्ट्रिंग आरंभीकरण के लिए लें:
const set1 = new Set(['a','a','b','b','c','c']);
console.log(...set1);
console.log(set1.size);
const set2 = new Set("aabbcc");
console.log(...set2);
console.log(set2.size);
सरणी और स्ट्रिंग के दोनों आउटपुट समान हैं। ध्यान दें कि ...set1
है प्रसार वाक्य रचना । ऐसा प्रतीत होता है कि पुनरावृत्ति के प्रत्येक तत्व को एक-एक करके सेट में जोड़ा जाता है, इसलिए चूंकि सरणी और स्ट्रिंग दोनों में समान तत्व होते हैं और चूंकि तत्व एक ही क्रम में होते हैं, इसलिए सेट समान बनाया जाता है। सेट के बारे में ध्यान देने योग्य एक और बात यह है कि जब उन पर पुनरावृति क्रम उस आदेश का पालन करता है जो तत्वों को सेट में डाला गया था। यहाँ एक सेट पर पुनरावृत्ति का एक उदाहरण है:
const set1 = new Set(['a','a','b','b','c','c']);
for(const element of set1) {
console.log(element);
}
चूँकि आप किसी सेट को इनिशियलाइज़ करने के लिए किसी भी iterable का उपयोग कर सकते हैं, यहाँ तक कि आप जनरेटर फंक्शन से भी itter इस्तेमाल कर सकते हैं । इटरेटर इनिशियलाइज़ेशन के दो ऐसे उदाहरण हैं जो समान आउटपुट का उत्पादन करते हैं:
function* getLetters1 () {
yield 'a';
yield 'a';
yield 'b';
yield 'b';
yield 'c';
yield 'c';
}
function* getLetters2 (letters, repeatTimes) {
for(const letter of letters) {
for(let i = 0; i < repeatTimes; ++i) {
yield letter;
}
}
}
console.log("------ getLetters1 ------");
console.log(...getLetters1());
const set3 = new Set(getLetters1());
console.log(...set3);
console.log(set3.size);
console.log("------ getLetters2 ------");
console.log(...getLetters2('abc', 2));
const set4 = new Set(getLetters2('abc', 2));
console.log(...set4);
console.log(set4.size);
इन उदाहरणों के जनरेटर फ़ंक्शन को केवल दोहराने के लिए नहीं लिखा जा सकता है, लेकिन अगर जनरेटर फ़ंक्शन अधिक जटिल है और जब तक कि निम्नलिखित प्रदर्शन को भी नकारात्मक रूप से प्रभावित नहीं करता है, तो आप जनरेटर से केवल मान प्राप्त करने में मदद करने के लिए सेट विधि का उपयोग कर सकते हैं जो डॉन नहीं करते हैं 'दोहरा नहीं।
यदि आप डॉ। रौशमायर के उनकी पुस्तक के अध्याय को पढ़े बिना सेट के बारे में अधिक जानना चाहते हैं, तो आप सेट पर एमडीएन डॉक्स देख सकते हैं । MDN भी इस तरह के का उपयोग कर के रूप में एक सेट पर बार-बार दोहराना के अधिक उदाहरण है forEach
और का उपयोग कर .keys
, .values
और .entries
तरीकों। एमडीएन में सेट यूनियन, सेट चौराहा, सेट अंतर, सममित सेट अंतर और सेट सुपरसेट चेकिंग जैसे उदाहरण भी हैं। उम्मीद है कि उन कार्यों में से अधिकांश आपके समर्थन में अपने स्वयं के कार्यों का निर्माण करने की आवश्यकता के बिना जावास्क्रिप्ट में उपलब्ध हो जाएंगे। वास्तव में, नए सेट के तरीकों के लिए यह TC39 प्रस्ताव है, जो उम्मीद करता है कि प्रस्ताव 4 चरण में पहुंचने पर समय में कुछ भविष्य के बिंदु पर जावास्क्रिप्ट में सेट करने के लिए निम्न विधियों को जोड़ना चाहिए:
- Set.prototyp.intersection (iterable) - विधि सेट चौराहे ऑपरेशन द्वारा नया सेट उदाहरण बनाता है।
- Set.prototype.union (iterable) - विधि सेट यूनियन ऑपरेशन द्वारा नया सेट इंस्टेंस बनाता है।
- Set.prototype.difference (iterable) - विधि पुनरावृति में मौजूद तत्वों के बिना नया सेट बनाता है।
- Set.prototyp.symmetricDifference (iterable) - रिटर्न तत्वों का सेट केवल या तो इसमें या पुनरावृत्ति में पाया जाता है।
- Set.prototype.isSubsetOf (iterable)
- Set.prototype.isDisjointFrom (iterable)
- Set.prototype.isSupersetOf (iterable)
'Tom' in set
लिए दिखने में सच है? ऐसा लगता है कि आपके पास किसी चीज के बारे में गलत धारणाएं हैं , और मैं इस बारे में पता लगाने की कोशिश कर रहा हूं ।