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

জাভাস্ক্রিপ্টে Set (সেট) ডেটা স্ট্রাকচার: কনসেপ্ট


Set Data Structure: সংজ্ঞা ও বৈশিষ্ট্য

Set (সেট) হলো একটি অ্যাবস্ট্রাক্ট ডেটা টাইপ যা কতিপয় ভ্যালু সংরক্ষণ করতে পারে, কোনো নির্দিষ্ট অর্ডার ছাড়া এবং কোনো রিপিটেড ভ্যালু ছাড়া। এটি গাণিতিক ফাইনাইট সেট (Finite Set) কনসেপ্টের কম্পিউটার ইমপ্লিমেন্টেশন।

Set-এর মূল বৈশিষ্ট্য

বৈশিষ্ট্য বর্ণনা
Uniqueness (এককত্ব) প্রতিটি এলিমেন্ট শুধু একবার থাকতে পারে। ডুপ্লিকেট অ্যালাও নয়।
No Order (অনঅর্ডার্ড) গাণিতিক সেটে অর্ডার নেই। (ES6 Set ইনসারশন অর্ডার মেনটেইন করে কিন্তু এটিতে নির্ভর করা উচিত নয়)।
Membership Test (সদস্যতা পরীক্ষা) প্রাইমারি অপারেশন: "এই ভ্যালু সেটে আছে কিনা?" — has(value)।
No Index Access অ্যারের মতো ইনডেক্স দিয়ে এক্সেস করা যায় না।

গাণিতিক সেট vs প্রোগ্রামিং সেট

গাণিতিক সেট প্রোগ্রামিং Set (ES6)
{1, 2, 3} = {3, 2, 1} (অর্ডার নেই) Insertion Order Preserved: Set([3,2,1]) ≠ Set([1,2,3])iteration order-এ
Infinite Sets Possible Only Finite Sets (Memory Limited)
Operations: ∪, ∩, -, Δ Methods: Union, Intersection, Difference (Custom Implementation)

কোথায় ব্যবহার হয়?

  • ডুপ্লিকেট রিমুভ: const unique = [...new Set(array)]
  • মেম্বারশিপ টেস্ট: if (allowedUsers.has(userId))
  • ট্যাগ/ক্যাটেগরি সিস্টেম: আর্টিকেল ট্যাগ, প্রোডাক্ট অ্যাট্রিবিউট।
  • গ্রাফ ভিজিটেড নোডস: BFS/DFS-এ ভিজিটেড ট্র্যাকিং।
  • পারমিশন/রোল সিস্টেম: ইউজার পারমিশন চেক।

JavaScript-এ Set Implementation Options

  1. ES6 Native Set: new Set() — সবচেয়ে ফাস্ট, অপ্টিমাইজড, প্রোডাকশন রেডি।
  2. Custom Class (Object-based): লার্নিং/এডুকেশনাল উদ্দেশ্যে।
  3. BitSet / Boolean Array: ছোট ইন্টিজার রেঞ্জের জন্য (খুব ফাস্ট, কম মেমরি)。——
  4. Sorted Array + Binary Search: যদি অর্ডার মেনটেইন করতে হয়।

ES6 Set Quick Reference

const s = new Set([1, 2, 3]);

s.add(4);           // Set {1,2,3,4}
s.add(2);           // Set {1,2,3,4} (No change)
s.has(2);           // true
s.has(5);           // false
s.delete(3);        // true, Set {1,2,4}
s.size;             // 3
s.clear();          // Set {}

for (const v of s) { /* ... */ }
s.forEach(v => { /* ... */ });

// Convert to Array
[...s];             // [1,2,4]
Array.from(s);      // [1,2,4]
  1. জাভাস্ক্রিপ্টে অ্যারে থেকে সেটে কনভার্ট করা

  2. জাভাস্ক্রিপ্টে অ্যারে vs সেট

  3. জাভাস্ক্রিপ্টে অবজেক্ট মান ডাইনামিক্যালি সেট করা

  4. জাভাস্ক্রিপ্টে ফলসি ভ্যালু চিহ্নিত করা