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

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


Set Data Structure: কাস্টম ইমপ্লিমেন্টেশন ও ES6 Native API

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

কাস্টম MySet Class (Learning Purpose)

class MySet {
  constructor() {
    this.container = {}; // Hash Mapとして使用
  }

  // Display Helper
  display() {
    console.log(this.container);
  }

  // Membership Test: O(1) Average
  has(val) {
    return this.container.hasOwnProperty(val);
  }

  // Add Element: O(1) Average
  add(val) {
    if (!this.has(val)) {
      this.container[val] = val;
      return true;
    }
    return false;
  }

  // Delete Element: O(1) Average
  delete(val) {
    if (this.has(val)) {
      delete this.container[val];
      return true;
    }
    return false;
  }

  // Clear All
  clear() {
    this.container = {};
  }

  // Iterate Elements
  forEach(callback) {
    for (let prop in this.container) {
      callback(prop); // Key passed as string
    }
  }
}

ES6 Native Set (Production Ready)

// Creation
const set1 = new Set();           // Empty
const set2 = new Set([1, 2, 5, 6]); // From Iterable

// Methods
set1.add(10);           // Add
set1.has(10);           // true (Membership Test)
set1.delete(10);        // Remove
set1.clear();           // Clear All
set1.size;              // 0 (Property, not method)

// Iteration
for (const val of set1) { /* ... */ }
set1.forEach(val => { /* ... */ });

// Convert to Array
const arr = [...set1];
const arr2 = Array.from(set1);

Membership Test: has() Method

// Custom
has(val) {
  return this.container.hasOwnProperty(val);
}

// Native
const testSet = new Set([1, 2, 5, 6]);
console.log(testSet.has(5));  // true
console.log(testSet.has(20)); // false
console.log(testSet.has(1));  // true

কেন Object ব্যবহার করা হয় (Custom Implementation-এ)?

  • JavaScript Object হলো Hash Map (Key-Value Store)。——
  • hasOwnProperty O(1) Average Lookup।
  • delete obj[key] O(1) Average Removal।
  • Key Automatic String Conversion: 1 → "1"।

Set vs Array vs Map

Feature Set Array Map
Unique Values ✅ Enforced ❌ Allows Duplicates ✅ Unique Keys
Key-Value Pairs ❌ (Value = Key) ❌ (Index = Key) ✅
Order Insertion Order (ES6) Index Order Insertion Order
Membership Test O(1) O(n) O(1)
Math Operations Union, Diff, Intersect Manual Manual
  1. জাভাস্ক্রিপ্টে 'new' অপারেটর ব্যবহার করে কনস্ট্রাক্টর তৈরির পদ্ধতি

  2. জাভাস্ক্রিপ্টে অটো-রিসাইজ টেক্সট এরিয়া তৈরি করা

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

  4. জাভাস্ক্রিপ্ট ইমপোর্টে {} ব্রেসের ব্যবহার