কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে Set (সেট) কখন ব্যবহার করবেন?


Set (সেট) ব্যবহার করার সঠিক সময় ও পরিস্থিতি

Set হলো ইউনিক ভ্যালু সংরক্ষণের জন্য আদর্শ ডেটা স্ট্রাকচার। নিচে কখন এবং কেন Set ব্যবহার করবেন তার গাইডলাইন দেওয়া হলো।

✅ Set ব্যবহার করুন যখন:

  • ইউনিক এলিমেন্ট দরকার: ডুপ্লিকেট অ্যালাও না করা (ট্যাগ, ক্যাটেগরি, ইউজার আইডি, পারমিশন)।
  • ফাস্ট মেম্বারশিপ টেস্ট: O(1) এ চেক করতে চান কোনো ভ্যালু সেটে আছে কিনা (has())।
  • অর্ডার গুরুত্বপূর্ণ নয়: এলিমেন্টের ক্রম মেনটেইন করার প্রয়োজন নেই (ES6-এ ইনসারশন অর্ডার থাকে কিন্তু লজিক্যালি অর্ডারড নয়)।
  • সেট অপারেশন দরকার: Union, Intersection, Difference, Symmetric Difference (গাণিতিক সেট অপারেশন)۔
  • ডুপ্লিকেট রিমুভ: অ্যারে থেকে ডুপ্লিকেট हাটাতে [...new Set(arr)]।

❌ Set ব্যবহার করবেন না যখন:

  • ডুপ্লিকেট ভ্যালু আলাও করতে চান (তब Array ব্যবহার করুন)।
  • ইনডেক্স-ভিত্তিক অ্যাক্সেস দরকার (arr[0], arr[5])।
  • Key-Value পেয়ার সংরক্ষণ করতে চান (তবে Map ব্যবহার করুন)।
  • সর্টেড অর্ডার মেনটেইন করতে চান (তবে Sorted Array/Tree ব্যবহার করুন)।

ES6 Set API Methods (ইমপ্লিমেন্ট করণীয়)

Method বর্ণনা রিটার্ন
add(value) নতুন এলিমেন্ট যোগ করে (ডুপ্লিকেট игনোর) Set Object (Chainable)
delete(value) এলিমেন্ট রিমুভ করে Boolean (Success)
has(value) এলিমেন্ট আছে কিনা চেক করে Boolean
clear() সকল এলিমেন্ট মুছে ফেলে undefined
forEach(callback) প্রতিটি এলিমেন্টে কলব্যাক এক্সিকিউট undefined
values() / keys() / entries() Iterator Object রিটার্ন Iterator
size (Property) এলিমেন্ট সংখ্যা Number

Set Operations (Union, Intersection, Difference)

ES6-এ বিল্ট-ইন নেই, কাস্টম ফাংশন লিখতে হয়:

// Union (A ∪ B)
const union = (a, b) => new Set([...a, ...b]);

// Intersection (A ∩ B)
const intersection = (a, b) => new Set([...a].filter(x => b.has(x)));

// Difference (A - B)
const difference = (a, b) => new Set([...a].filter(x => !b.has(x)));

// Symmetric Difference (A Δ B)
const symDiff = (a, b) => new Set([
  ...[...a].filter(x => !b.has(x)),
  ...[...b].filter(x => !a.has(x))
]);

// Example
const setA = new Set([1, 2, 3, 4]);
const setB = new Set([3, 4, 5, 6]);

console.log(union(setA, setB));        // Set { 1, 2, 3, 4, 5, 6 }
console.log(intersection(setA, setB)); // Set { 3, 4 }
console.log(difference(setA, setB));   // Set { 1, 2 }
console.log(symDiff(setA, setB));      // Set { 1, 2, 5, 6 }

Performance Note

  • Set O(1) Average Case (Hash Table Implementation)。——
  • Array includes O(n) Linear Search।
  • বড় ডেটাসেটে Set ব্যবহার করলে পারফরম্যান্সে বড় ديفারেন্স আসে।
  1. আপনার পিসিতে ReadyBoost ব্যবহার করা উচিত কিনা?

  2. জাভাস্ক্রিপ্টে Arrow Function কখন ব্যবহার করা উচিত নয়

  3. ফিট होने চাইলে FitOn অ্যাপ ব্যবহার করার ৪টি কারণ

  4. HDMI স্প্লিটার বনাম সুইচ: কখন কোনটি ব্যবহার করবেন