ES6-এ নতুন দুটি ডেটা স্ট্রাকচার যুক্ত করা হয়েছে, Set এবং WeakSet, যেগুলি বিশেষভাবে ইউনিক (unique) মান বা অবজেক্ট গুলি সংরক্ষণের জন্য ব্যবহৃত হয়। এগুলি সাধারণভাবে array এর বিকল্প হিসেবে ব্যবহৃত হতে পারে, তবে কিছু মূল পার্থক্য আছে যেগুলি বিশেষভাবে তাদের কার্যকারিতাকে আরও উন্নত করে তোলে।
1. Set কী?
Set একটি ES6 ডেটা স্ট্রাকচার যা শুধুমাত্র ইউনিক মান (unique values) ধারণ করে। এটি array এর মত কাজ করে, তবে এর মধ্যে duplicate values থাকতে পারে না। Set-এ উপাদানগুলি কোনো নির্দিষ্ট অর্ডারে থাকে না, এবং আপনি যেকোনো ধরনের ডেটা (primitive value বা object) রাখতে পারেন।
Set ডিফাইন করা
let mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(3);
mySet.add(3); // duplicate value will not be added
console.log(mySet); // Set { 1, 2, 3 }
এখানে add() মেথড ব্যবহার করে Set-এ মান যোগ করা হয়েছে। যখন আপনি 3 মানটি দ্বিতীয়বার যোগ করার চেষ্টা করেছেন, তখন এটি যুক্ত হয়নি কারণ Set-এ duplicate মান থাকতে পারে না।
Set এর কিছু গুরুত্বপূর্ণ মেথড
add(value): Set-এ একটি মান যোগ করে। Duplicate values যোগ করতে পারবে না।has(value): চেক করে যে Set-এ একটি নির্দিষ্ট মান আছে কি না।delete(value): Set থেকে একটি নির্দিষ্ট মান মুছে ফেলে।clear(): Set-এর সব মান মুছে ফেলে।size: Set-এর মধ্যে মোট মানের সংখ্যা।
let mySet = new Set([1, 2, 3]);
console.log(mySet.has(2)); // true
console.log(mySet.has(4)); // false
mySet.delete(2);
console.log(mySet); // Set { 1, 3 }
mySet.clear();
console.log(mySet); // Set {}
2. WeakSet কী?
WeakSet একটি বিশেষ ধরনের Set, যেখানে objects ছাড়া অন্য কোনো ধরনের ডেটা সংরক্ষণ করা যায় না। প্রধান পার্থক্য হলো, WeakSet-এর মধ্যে যেসব অবজেক্ট সংরক্ষিত হয়, সেগুলোর সাথে সম্পর্কিত কোনো রেফারেন্স থাকলে সেই অবজেক্ট গুলো garbage collection এর মাধ্যমে মুছে ফেলা যেতে পারে, অর্থাৎ WeakSet গুলি weak references ধারণ করে। এটি সাধারণত memory management এর ক্ষেত্রে সহায়ক হয়।
WeakSet ডিফাইন করা
let myWeakSet = new WeakSet();
let obj1 = { name: 'John' };
let obj2 = { name: 'Jane' };
myWeakSet.add(obj1);
myWeakSet.add(obj2);
console.log(myWeakSet); // WeakSet { { name: 'John' }, { name: 'Jane' } }
myWeakSet.delete(obj1);
console.log(myWeakSet); // WeakSet { { name: 'Jane' } }
এখানে, add() মেথড ব্যবহার করে অবজেক্টগুলো WeakSet-এ যোগ করা হয়েছে। delete() মেথডের মাধ্যমে, অবজেক্ট মুছে ফেলা হয়েছে।
WeakSet এর কিছু গুরুত্বপূর্ণ মেথড
add(value): WeakSet-এ একটি অবজেক্ট যোগ করে।has(value): চেক করে যে, WeakSet-এ একটি অবজেক্ট আছে কি না।delete(value): WeakSet থেকে একটি অবজেক্ট মুছে ফেলে।
Set এবং WeakSet এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Set | WeakSet |
|---|---|---|
| মান | কোনো ধরনের মান (primitive বা object) রাখতে পারে। | শুধুমাত্র objects রাখা যায়। |
| Duplicate মান | Duplicate মান থাকতে পারে না। | Duplicate মানের সমস্যা নেই। |
| Garbage Collection | Garbage collection এর জন্য এটি weak নয়। | Weak references ব্যবহার করে, objects auto-garbage collect হয়। |
| Iteration | Set ইটারেবল (iterable), মান গুলি iterate করা যায়। | WeakSet ইটারেবল নয়, অর্থাৎ এর মান iterate করা যায় না। |
| Usage | সাধারণত unique primitive values বা objects রাখার জন্য। | memory management এবং objects reference রাখতে ব্যবহৃত হয়। |
কোন ক্ষেত্রে ব্যবহার করবেন?
- Set ব্যবহার করা উচিত যখন আপনার ইউনিক ভ্যালু বা ডেটা সংরক্ষণ করতে হবে এবং আপনি সেই ডেটার উপর বিভিন্ন অপারেশন যেমন add, delete, এবং has করতে চান।
- WeakSet ব্যবহার করা উচিত যখন আপনি অবজেক্ট গুলোর জন্য weak reference রাখতে চান, অর্থাৎ আপনাকে এসব অবজেক্টের রেফারেন্স ম্যানেজমেন্ট এর জন্য garbage collection এর সুবিধা নিতে হবে।
WeakSet মূলত মেমরি ব্যবস্থাপনা বা রেফারেন্স ট্র্যাকিং-এর জন্য উপকারী, যখন আপনি নিশ্চিত হতে চান যে অবজেক্টগুলির সাথে আর কোনো রেফারেন্স না থাকলে সেগুলি স্বয়ংক্রিয়ভাবে মুছে যাবে।
Read more