JS Set लॉजिक
In this page:
const union = new Set([...setA, ...setB]);
const intersection = new Set([...setA].filter(x => setB.has(x)));
const difference = new Set([...setA].filter(x => !setB.has(x)));
Union: दो Sets को Combine करना
setA.union(setB) एक बिल्कुल नया Set return करता है जिसमें दोनों Sets के मिलाए गए हर unique item होता है -- बिल्कुल वैसे जैसे दो lists को मिलाते हुए किसी भी duplicates को अपने आप हटाना, क्योंकि एक Set कभी एक जैसी value दो बार नहीं रख सकता।
उदाहरण: Union: Combining Two Sets
const a = new Set([1, 2, 3]);
const b = new Set([3, 4, 5]);
console.log(a.union(b)); // {1, 2, 3, 4, 5}
Intersection: Shared Items ढूंढना
setA.intersection(setB) एक नया Set return करता है जिसमें सिर्फ वही items होते हैं जो दोनों Sets में मौजूद हैं -- यह common elements ढूंढने के लिए उपयोगी है, जैसे दो articles के बीच साझा tags, या दो अलग-अलग groups में मौजूद users।
उदाहरण: Intersection: Finding Shared Items
const a = new Set([1, 2, 3]);
const b = new Set([2, 3, 4]);
console.log(a.intersection(b)); // {2, 3}
Difference: किसी एक Set की अपनी चीज़ें ढूंढना
setA.difference(setB) एक नया Set return करता है जिसमें सिर्फ वही items होते हैं जो setA में हैं पर setB में नहीं -- यह यह ढूंढने के लिए उपयोगी है कि क्या हटाया गया, क्या process होना बाकी है, या एक group के पास क्या है जो दूसरे के पास नहीं, सिर्फ एक दिशा में।
उदाहरण: Difference: Finding What's Unique to One Set
const a = new Set([1, 2, 3]);
const b = new Set([2, 3]);
console.log(a.difference(b)); // {1}
अन्य Set Relationship Checks
isSubsetOf(), isSupersetOf(), और isDisjointFrom() इस बारे में खास yes/no सवालों के जवाब देते हैं कि दो Sets कैसे संबंधित हैं -- क्या एक पूरी तरह दूसरे के अंदर है, क्या एक पूरी तरह दूसरे को समाहित करता है, या क्या वे बिल्कुल कोई elements साझा नहीं करते।
उदाहरण: Other Set Relationship Checks
const a = new Set([1, 2]);
const b = new Set([1, 2, 3]);
console.log(a.isSubsetOf(b)); // true
console.log(b.isSupersetOf(a)); // true
console.log(a.isDisjointFrom(new Set([9]))); // true
पुराने Browsers के लिए Fallback
चूंकि ये set-operation methods अपेक्षाकृत नया addition हैं, पुराने browsers को support करने की ज़रूरत वाला code array methods और manual filtering से वही results पा सकता है -- union, intersection, और difference व्यवहार को manually दोहराने के लिए spread syntax को .filter() के साथ मिलाकर।
उदाहरण: Fallback for Older Browsers
const a = [1, 2, 3];
const b = [2, 3, 4];
const union = [...new Set([...a, ...b])];
const intersection = a.filter(x => b.includes(x));
console.log(union, intersection); // manual fallback for older browsers
- यह मान लेना कि set-operation methods (union, intersection, difference) हर जगह supported हैं -- ये एक relatively recent addition हैं, और पुराने browsers को इसके बजाय एक manual loop-based implementation चाहिए हो सकता है।
- intersection (सिर्फ shared items) को union (दोनों की सारी चीज़ें) से confuse करना, जिससे गलत combined result मिलता है।
- यह भूल जाना कि ये methods एक नया Set return करते हैं, original Sets में से किसी को भी in place modify करने के बजाय।
- setA.union(setB) एक नया Set return करता है जिसमें दोनों Sets में मौजूद हर item होता है।
- setA.intersection(setB) एक नया Set return करता है जिसमें सिर्फ वे items होते हैं जो दोनों Sets में मौजूद हैं।
- setA.difference(setB) एक नया Set return करता है जिसमें वे items होते हैं जो setA में हैं लेकिन setB में नहीं।
union(), intersection(), और difference() जैसे Set methods ES2024/ES2025 में जोड़े गए थे और सभी major browsers के current versions में supported हैं; पुराने browsers को एक manual loop-based fallback चाहिए।
Chapter Quiz — Complete all 26 topics to unlock
0/26 topics done
Complete these topics first:
- JS Dates
- JS Math
- JS Conditionals
- JS Switch
- JS Loop For
- JS Loop While
- JS Iterables
- JS Sets
- JS Maps
- JS typeof
- JS Type Conversion
- JS Destructuring
- JS Arrow Functions
- JS Classes
- JS Modules
- JS Promises
- JS Async/Await
- JS DOM
- JS DOM Methods
- JS Events Advanced
- JS DOM Navigation
- JS DOM Collections
- JS Async Callbacks
- JS Async Parallel
- JS Date Set
- JS Set Logic