खोज…
परिचय
सेट ऑब्जेक्ट आपको किसी भी प्रकार के अनन्य मानों को संग्रहीत करने देता है, चाहे आदिम मान या ऑब्जेक्ट संदर्भ।
सेट ऑब्जेक्ट्स मानों का संग्रह हैं। आप सम्मिलन क्रम में एक सेट के तत्वों के माध्यम से पुनरावृति कर सकते हैं। सेट में एक मूल्य केवल ONCE हो सकता है; यह सेट के संग्रह में अद्वितीय है। समान मूल्यों का उपयोग करते हुए भेदभावपूर्ण भेदभाव किया जाता है।
वाक्य - विन्यास
- नया सेट ([चलने योग्य])
- mySet.add (मान)
- mySet.clear ()
- mySet.delete (मान)
- mySet.entries ()
- mySet.forEach (कॉलबैक [, thisArg])
- mySet.has (मान)
- mySet.values ()
पैरामीटर
पैरामीटर | विवरण |
---|---|
iterable | यदि एक चलने योग्य वस्तु पास हो जाती है, तो इसके सभी तत्व नए सेट में जुड़ जाएंगे। अशक्त को अपरिभाषित माना जाता है। |
मूल्य | सेट ऑब्जेक्ट में जोड़ने के लिए तत्व का मूल्य। |
वापस कॉल करें | प्रत्येक तत्व के लिए निष्पादित करने का कार्य। |
thisArg | वैकल्पिक। कॉलबैक निष्पादित करते समय इसका उपयोग करने के लिए मूल्य। |
टिप्पणियों
क्योंकि सेट में प्रत्येक मान अद्वितीय होना चाहिए, मूल्य समानता की जाँच की जाएगी और उसी एल्गोरिथ्म पर आधारित नहीं है जैसा कि === ऑपरेटर में उपयोग किया जाता है। विशेष रूप से, सेट्स के लिए, +0 (जो सख्ती से -0 के बराबर है) और -0 अलग-अलग मूल्य हैं। हालाँकि, यह नवीनतम ECMAScript 6 विनिर्देशन में बदल दिया गया है। गेको 29.0 (फ़ायरफ़ॉक्स 29 / थंडरबर्ड 29 / सीमॉन्की 2.26) (बग 952870) और हाल ही में रात में क्रोम, +0 और -0 से शुरू करके सेट ऑब्जेक्ट्स में समान मूल्य के रूप में माना जाता है। इसके अलावा, NaN और अपरिभाषित भी एक सेट में संग्रहीत किया जा सकता है। NaN को NaN के समान माना जाता है (भले ही NaN! == NaN)।
एक सेट बनाना
सेट ऑब्जेक्ट आपको किसी भी प्रकार के अनन्य मानों को संग्रहीत करने देता है, चाहे आदिम मान या ऑब्जेक्ट संदर्भ।
आप आइटम को एक सेट में धकेल सकते हैं और उन्हें एक सादे जावास्क्रिप्ट सरणी के समान बना सकते हैं, लेकिन सरणी के विपरीत, यदि आप पहले से ही इसमें मौजूद मूल्य हैं, तो आप किसी सेट में मान नहीं जोड़ सकते।
एक नया सेट बनाने के लिए:
const mySet = new Set();
या आप इसे शुरू करने वाले मूल्यों को देने के लिए किसी भी चलने योग्य वस्तु से एक सेट बना सकते हैं:
const arr = [1,2,3,4,4,5];
const mySet = new Set(arr);
सेट सामग्री के ऊपर के उदाहरण में {1, 2, 3, 4, 5}
। ध्यान दें कि इसे बनाने के लिए उपयोग किए गए मूल सरणी के विपरीत, मान 4 केवल एक बार दिखाई देता है।
सेट पर एक मान जोड़ना
सेट में मान जोड़ने के लिए, .add()
विधि का उपयोग करें:
mySet.add(5);
यदि मान सेट में पहले से मौजूद है तो इसे फिर से नहीं जोड़ा जाएगा, क्योंकि सेट में अद्वितीय मूल्य होते हैं।
ध्यान दें कि .add()
विधि सेट ही देता है, तो एक साथ आप श्रृंखला ऐड कॉल कर सकते हैं:
mySet.add(1).add(2).add(3);
एक सेट से मूल्य निकालना
सेट से मान निकालने के लिए, .delete()
विधि का उपयोग करें:
mySet.delete(some_val);
यदि सेट में मान मौजूद था या हटा दिया गया था, या अन्यथा false
है, तो यह फ़ंक्शन true
लौटेगा।
यह जाँचना कि क्या किसी सेट में कोई मान मौजूद है
यह जांचने के लिए कि क्या दिए गए मान सेट में मौजूद हैं, का उपयोग करें .has()
विधि:
mySet.has(someVal);
वापस आ जाएगी true
अगर someVal
सेट में प्रकट होता है, false
अन्यथा।
एक सेट समाशोधन
आप .clear()
विधि का उपयोग करके एक सेट में सभी तत्वों को निकाल सकते हैं:
mySet.clear();
लंबाई निर्धारित करना
आप .size
प्रॉपर्टी का उपयोग करके सेट के अंदर तत्वों की संख्या प्राप्त कर सकते हैं
const mySet = new Set([1, 2, 2, 3]);
mySet.add(4);
mySet.size; // 4
Array.prototype.length
विपरीत यह गुण केवल-पढ़ने के लिए है, जिसका अर्थ है कि आप इसे इसे असाइन करके इसे बदल नहीं सकते हैं:
mySet.size = 5;
mySet.size; // 4
सख्त मोड में यह एक त्रुटि फेंकता है:
TypeError: Cannot set property size of #<Set> which has only a getter
सरणियों के लिए सेट परिवर्तित
कभी-कभी आप एक सरणी के लिए एक सेट परिवर्तित करने के लिए, उदाहरण के लिए उपयोग करने के लिए सक्षम होने के लिए आवश्यकता हो सकती है Array.prototype
तरह के तरीकों .filter()
। ऐसा करने के लिए, Array.from()
या destructuring-assignment
:
var mySet = new Set([1, 2, 3, 4]);
//use Array.from
const myArray = Array.from(mySet);
//use destructuring-assignment
const myArray = [...mySet];
अब आप केवल संख्याओं को समाहित करने के लिए ऐरे को फ़िल्टर कर सकते हैं और इसे सेट कंस्ट्रक्टर के उपयोग से सेट में बदल सकते हैं:
mySet = new Set(myArray.filter(x => x % 2 === 0));
mySet
अब केवल सम संख्याएँ हैं:
console.log(mySet); // Set {2, 4}
अंतर और समूह में अंतर
चौराहे और सेट में अंतर के लिए कोई निर्माण-विधियां नहीं हैं, लेकिन आप अभी भी इसे प्राप्त कर सकते हैं, लेकिन उन्हें सरणियों, फ़िल्टरिंग और सेट्स में वापस परिवर्तित कर सकते हैं:
var set1 = new Set([1, 2, 3, 4]),
set2 = new Set([3, 4, 5, 6]);
const intersection = new Set(Array.from(set1).filter(x => set2.has(x)));//Set {3, 4}
const difference = new Set(Array.from(set1).filter(x => !set2.has(x))); //Set {1, 2}
Iterating समूह
आप एक सेट को पुनरावृत्त करने के लिए एक साधारण लूप का उपयोग कर सकते हैं:
const mySet = new Set([1, 2, 3]);
for (const value of mySet) {
console.log(value); // logs 1, 2 and 3
}
जब एक सेट पर पुनरावृत्ति होती है, तो यह हमेशा उस क्रम में मान लौटाएगा जिस क्रम में उन्हें पहली बार सेट में जोड़ा गया था। उदाहरण के लिए:
const set = new Set([4, 5, 6])
set.add(10)
set.add(5) //5 already exists in the set
Array.from(set) //[4, 5, 6, 10]
वहाँ भी एक है .forEach()
विधि, के समान Array.prototype.forEach()
। यह दो मापदंडों है callback
, जो प्रत्येक तत्व के लिए क्रियान्वित की जाएगी वैकल्पिक, और thisArg
है, जो के रूप में इस्तेमाल किया जाएगा this
जब क्रियान्वित callback
।
callback
के तीन तर्क हैं। पहले दो तर्क सेट के वर्तमान तत्व ( Array.prototype.forEach()
और Map.prototype.forEach()
) के साथ संगत हैं और तीसरा तर्क सेट ही है।
mySet.forEach((value, value2, set) => console.log(value)); // logs 1, 2 and 3