Sets এবং Maps ES6 (ECMAScript 2015)-এ নতুন ডেটা স্ট্রাকচার হিসেবে যুক্ত হয়েছে। এগুলি অ্যারে এবং অবজেক্টের থেকে আরও উন্নত এবং দক্ষ উপায় প্রদান করে ডেটা সংরক্ষণ এবং পরিচালনা করার জন্য। Sets এবং Maps আপনাকে আরও ফ্লেক্সিবিলিটি এবং পারফরম্যান্স অফার করে যখন আপনি ডেটার সাথে কাজ করেন।
1. Sets
Set একটি ধরনের ডেটা স্ট্রাকচার যা শুধুমাত্র ইউনিক (অনন্য) মান ধারণ করতে সক্ষম। একে কখনও ডুপ্লিকেট মান সংরক্ষণ করার অনুমতি দেওয়া হয় না। Set-এর মধ্যে কোন নির্দিষ্ট অর্ডার থাকে না এবং এটি ইটারেবল (iterable), অর্থাৎ এর উপাদানগুলির উপর লুপ চালানো যেতে পারে।
Set তৈরি করা
const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(3);
mySet.add(1); // Duplicate value, will not be added
console.log(mySet); // Set { 1, 2, 3 }
এখানে, mySet একটি Set অবজেক্ট তৈরি করা হয়েছে। add() মেথড ব্যবহার করে আমরা Set-এ মান যোগ করছি। কিন্তু, একটি ডুপ্লিকেট মান (যেমন, 1) যোগ করা হলে সেটি বাদ দেওয়া হবে।
Set এর কিছু গুরুত্বপূর্ণ মেথড
add(value): Set-এ নতুন মান যোগ করে।has(value): Set-এ একটি নির্দিষ্ট মান রয়েছে কি না তা যাচাই করে।delete(value): Set থেকে একটি মান মুছে ফেলে।clear(): Set-এ সব উপাদান মুছে ফেলে।size: Set এর মধ্যে মোট উপাদানের সংখ্যা প্রদান করে।
const numbers = new Set([1, 2, 3, 4]);
console.log(numbers.has(2)); // true
console.log(numbers.size); // 4
numbers.delete(3);
console.log(numbers); // Set { 1, 2, 4 }
numbers.clear();
console.log(numbers); // Set {}
2. Maps
Map একটি ডেটা স্ট্রাকচার যা key-value pairs ধারণ করে। এটি objects-এর মতো কিন্তু আরও উন্নত এবং ফিচারসমৃদ্ধ। Map এ কী এবং মানের যেকোনো ধরনের ডেটা (যেমন, অবজেক্ট, ফাংশন, বা primitive types) ব্যবহার করা যেতে পারে। Map উপাদানগুলি ordered হয়, অর্থাৎ আপনি যেভাবে যুক্ত করবেন সেভাবে ইটারেশন করা হবে।
Map তৈরি করা
const myMap = new Map();
myMap.set("name", "John");
myMap.set("age", 30);
myMap.set("country", "USA");
console.log(myMap); // Map { 'name' => 'John', 'age' => 30, 'country' => 'USA' }
এখানে, myMap একটি Map অবজেক্ট তৈরি করা হয়েছে। set(key, value) মেথড ব্যবহার করে আমরা key-value পেয়ার যোগ করেছি।
Map এর কিছু গুরুত্বপূর্ণ মেথড
set(key, value): একটি নতুন key-value পেয়ার যুক্ত করে।get(key): একটি নির্দিষ্ট key এর জন্য মান ফেরত দেয়।has(key): নির্দিষ্ট key এর উপস্থিতি চেক করে।delete(key): নির্দিষ্ট key-value পেয়ার মুছে ফেলে।clear(): সব key-value পেয়ার মুছে ফেলে।size: Map এর মধ্যে মোট key-value পেয়ার সংখ্যা প্রদান করে।
const myMap = new Map();
myMap.set("name", "John");
myMap.set("age", 30);
console.log(myMap.get("name")); // "John"
console.log(myMap.has("age")); // true
console.log(myMap.size); // 2
myMap.delete("age");
console.log(myMap.has("age")); // false
myMap.clear();
console.log(myMap); // Map {}
Set এবং Map এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Set | Map |
|---|---|---|
| কী ধরনের ডেটা ধারণ করতে পারে | ইউনিক ভ্যালু (অ্যারে, স্ট্রিং, নম্বর) | key-value পেয়ার (যেকোনো ধরনের ডেটা) |
| ডুপ্লিকেট মান | ডুপ্লিকেট মান গ্রহন করে না | ডুপ্লিকেট কী (key) গ্রহন করতে পারে না |
| অর্ডার | insertion order অনুযায়ী | insertion order অনুযায়ী |
| ইটারেশন | শুধুমাত্র মান ইটারেট করা যায় | কী এবং মান দুটোই ইটারেট করা যায় |
প্রতিরোধের জন্য has() মেথড | মান চেক করা যায় | কী চেক করা যায় |
| স্টোরেজ স্ট্রাকচার | শুধুমাত্র ভ্যালু স্টোর করা হয় | কী এবং ভ্যালু উভয়ই স্টোর করা হয় |
Set এবং Map-এর ব্যবহার কেস
- Set: যখন আপনি একটি ডেটা সংগ্রহ করতে চান এবং ডুপ্লিকেট এন্ট্রি এড়াতে চান, তখন Set ব্যবহার করা উচিত। উদাহরণস্বরূপ, ইউনিক আইডেন্টিফায়ার বা ভ্যালিড আইটেম লিস্ট তৈরি করার জন্য।
- Map: যখন আপনি key-value জোড়া নিয়ে কাজ করতে চান এবং ইনপুট মানের সাথে সম্পর্কিত আউটপুট দরকার, তখন Map ব্যবহার করা উচিত। উদাহরণস্বরূপ, কনফিগারেশন সেটিংস, বা ইউজার তথ্য সংরক্ষণে।
সারাংশ
Sets এবং Maps ES6 এর নতুন ডেটা স্ট্রাকচার যা আপনাকে আরও শক্তিশালী এবং প্রোডাক্টিভ কোড লেখার সুযোগ দেয়। Set ডুপ্লিকেট মান ছাড়াই মান সংরক্ষণ করতে সক্ষম, এবং Map key-value পেয়ার ধারণ করে যা আরও সুনির্দিষ্ট এবং অপ্টিমাইজড ডেটা পরিচালনা করতে সাহায্য করে।
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 মূলত মেমরি ব্যবস্থাপনা বা রেফারেন্স ট্র্যাকিং-এর জন্য উপকারী, যখন আপনি নিশ্চিত হতে চান যে অবজেক্টগুলির সাথে আর কোনো রেফারেন্স না থাকলে সেগুলি স্বয়ংক্রিয়ভাবে মুছে যাবে।
ES6 (ECMAScript 2015) এ Map এবং WeakMap দুটি নতুন ধরনের ডেটা স্ট্রাকচার পরিচিত করা হয়েছে, যা key-value pairs ধারণ করার জন্য ব্যবহৃত হয়। তবে এই দুইটি স্ট্রাকচারের মধ্যে কিছু গুরুত্বপূর্ণ পার্থক্য রয়েছে। এখানে আমরা Map এবং WeakMap এর ব্যবহার এবং পার্থক্য আলোচনা করব।
Map
Map একটি নতুন ডেটা স্ট্রাকচার যা key-value পেয়ার ধারণ করে। এটি একটি ordered collection এবং এতে কোন ধরনের key ব্যবহার করা যায় (এমনকি primitive types বা objects ও হতে পারে)। Map এর প্রপার্টি গুলি অপরিবর্তনীয় (mutable), অর্থাৎ মান পরিবর্তন করা যেতে পারে।
Map এর বৈশিষ্ট্যসমূহ:
- Key হিসেবে primitive types (যেমন string, number) বা objects ব্যবহার করা যায়।
- Insertion order বজায় থাকে, অর্থাৎ যে order এ key-value পেয়ারগুলো ইনসার্ট করা হয়, তা বের করার সময় সেই order অনুসরণ করা হয়।
- Size প্রপার্টি আছে, যা ম্যাপের মধ্যে থাকা key-value পেয়ারগুলোর সংখ্যা জানায়।
- Iteration করা সহজ এবং যে কোন ধরনের iterable (forEach, for-of লুপ, ইত্যাদি) ব্যবহার করা যায়।
Map এর সিনট্যাক্স:
const map = new Map();
// Value set করা
map.set("name", "John");
map.set(1, "One");
map.set(true, "Boolean");
console.log(map.get("name")); // John
console.log(map.get(1)); // One
console.log(map.size); // 3
Map এর উদাহরণ:
const map = new Map();
map.set("name", "Alice");
map.set("age", 25);
console.log(map.has("name")); // true
console.log(map.get("age")); // 25
console.log(map.size); // 2
map.delete("name");
console.log(map.has("name")); // false
console.log(map.size); // 1
এখানে, set() মেথড দিয়ে মান সেট করা হয়েছে, get() দিয়ে মান আনা হয়েছে, has() দিয়ে key উপস্থিত কিনা চেক করা হয়েছে এবং delete() দিয়ে key-value পেয়ার মুছে ফেলা হয়েছে।
WeakMap
WeakMap একটি বিশেষ ধরনের ম্যাপ যেখানে key গুলি objects হতে হবে এবং values যেকোন ধরনের হতে পারে। WeakMap এর সবচেয়ে গুরুত্বপূর্ণ বৈশিষ্ট্য হলো এটি garbage collection এর সঙ্গে কাজ করে। যখন একটি object WeakMap থেকে সরানো হয়, তখন সেটি garbage collect হতে পারে। অন্যদিকে, Map এ কোন key-object থাকলে সেই object garbage collect হতে পারে না, যতক্ষণ না সেটি explicit ভাবে মুছে না ফেলা হয়।
WeakMap এর বৈশিষ্ট্যসমূহ:
- Key হিসেবে শুধু objects ব্যবহার করা যায়, primitive types (যেমন string, number) ব্যবহার করা যাবে না।
- Garbage collection এর সুবিধা: যখন WeakMap থেকে কোনো key সরানো হয়, তখন সেই key এর associated value স্বয়ংক্রিয়ভাবে মুছে যায় এবং garbage collector সেই object কে মুছে দেয়।
- No iteration: WeakMap এ কোন iteration করা সম্ভব নয়। অর্থাৎ, WeakMap এর উপর forEach বা for-of লুপ ব্যবহার করা যাবে না।
- No size property: WeakMap এ size প্রপার্টি নেই, অর্থাৎ আমরা জানি না এতে মোট কয়টি key-value পেয়ার রয়েছে।
WeakMap এর সিনট্যাক্স:
const weakMap = new WeakMap();
const obj1 = {};
const obj2 = {};
weakMap.set(obj1, "value1");
weakMap.set(obj2, "value2");
console.log(weakMap.get(obj1)); // value1
WeakMap এর উদাহরণ:
const weakMap = new WeakMap();
let obj1 = { name: "John" };
let obj2 = { name: "Alice" };
weakMap.set(obj1, "Object 1");
weakMap.set(obj2, "Object 2");
console.log(weakMap.get(obj1)); // "Object 1"
// If obj1 is dereferenced, it will be garbage collected and removed from the WeakMap
obj1 = null;
// After obj1 is set to null, the associated entry will be removed from the WeakMap
console.log(weakMap.get(obj1)); // undefined (because obj1 is garbage collected)
এখানে, obj1 এবং obj2 objects WeakMap এ key হিসেবে ব্যবহৃত হচ্ছে এবং তাদের সাথে সম্পর্কিত value গুলি set() মেথড দিয়ে সেট করা হচ্ছে। যখন obj1 কে null করা হয়েছে, তখন WeakMap থেকে সেই key-value পেয়ার মুছে গেছে এবং get() কল করলে undefined রিটার্ন হয়েছে।
Map এবং WeakMap এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Map | WeakMap |
|---|---|---|
| Key Type | Primitive types এবং Objects উভয়ই হতে পারে | কেবলমাত্র Objects |
| Garbage Collection | No automatic garbage collection | Automatic garbage collection |
| Iteration | Iteration supported | Iteration সম্ভব নয় |
| Size Property | Yes | No |
| Memory Management | Manages memory until explicitly deleted | Automatically manages memory and cleans up unused objects |
কোথায় ব্যবহার করবেন?
- Map: যখন আপনি যে কোনো ধরনের key-value পেয়ার সংগ্রহ করতে চান এবং key গুলি primitive types হতে পারে, অথবা আপনি key-value পেয়ার গুলির উপর iteration করতে চান।
- WeakMap: যখন আপনি objects কে key হিসেবে ব্যবহার করতে চান এবং আপনি চান যে, সেই objects গুলি garbage collection এর মাধ্যমে অটোমেটিক্যালি মুছে যাক, যাতে মেমরি ব্যবস্থাপনা সহজ হয় (যেমন: DOM elements, cache management ইত্যাদি)।
এভাবেই Map এবং WeakMap এর মধ্যে পার্থক্য এবং তাদের ব্যবহার সম্পর্কিত ধারণা তুলে ধরা হলো।
ES6-এ দুটি নতুন ডাটা স্ট্রাকচার Set এবং Map যোগ করা হয়েছে, যা Array এবং Object থেকে কিছু পার্থক্য নিয়ে আসে এবং কিছু নতুন কার্যকারিতা প্রদান করে। এই নতুন স্ট্রাকচারগুলো অর্ডার বজায় রাখা, unique elements রাখা এবং key-value পেয়ার দিয়ে ডেটা সঞ্চয়ের সুবিধা দেয়। নিচে Set এবং Map এর কিছু গুরুত্বপূর্ণ মেথড এবং তাদের ব্যবহারের পদ্ধতি আলোচনা করা হলো।
1. Set
Set একটি বিশেষ ধরনের ডাটা স্ট্রাকচার, যেখানে শুধুমাত্র unique values রাখা হয়। এর মানে হল যে, সেটে একই মান একাধিকবার থাকতে পারে না।
Set এর মেথড:
add(value): একটি নতুন মান set-এ যোগ করে। এটি যদি একই মান থাকে, তবে সেটি আর যোগ করা হবে না।const numbers = new Set(); numbers.add(1); numbers.add(2); numbers.add(3); numbers.add(2); // Duplicate, will not be added console.log(numbers); // Set { 1, 2, 3 }has(value): চেক করে যে, একটি নির্দিষ্ট মান set-এ আছে কিনা।console.log(numbers.has(2)); // true console.log(numbers.has(4)); // falsedelete(value): একটি নির্দিষ্ট মান set থেকে মুছে ফেলে।numbers.delete(2); console.log(numbers); // Set { 1, 3 }clear(): set-এর সব মান মুছে ফেলে।numbers.clear(); console.log(numbers); // Set {}size: set-এ কতগুলো উপাদান আছে তা জানাতে ব্যবহৃত হয়।numbers.add(1).add(2).add(3); console.log(numbers.size); // 3forEach(callback): set এর প্রতিটি উপাদান এর উপর কার্যকরী ফাংশন প্রয়োগ করতে ব্যবহার করা হয়।numbers.forEach((value) => { console.log(value); // 1, 2, 3 });
2. Map
Map একটি key-value পেয়ার ডাটা স্ট্রাকচার, যেখানে প্রতিটি key এর সাথে একটি মান (value) যুক্ত থাকে। Map-এ unique keys থাকতে হয়, এবং keys যেকোনো ডাটা টাইপ হতে পারে (অথবা অবজেক্টও হতে পারে)।
Map এর মেথড:
set(key, value): একটি নতুন key-value পেয়ার map-এ যোগ করে। যদি key ইতোমধ্যে থাকে, তবে তার মান আপডেট হয়।const user = new Map(); user.set('name', 'John'); user.set('age', 30); console.log(user); // Map { 'name' => 'John', 'age' => 30 }get(key): নির্দিষ্ট key-এর সাথে যুক্ত value পায়।console.log(user.get('name')); // "John" console.log(user.get('age')); // 30has(key): চেক করে যে, একটি নির্দিষ্ট key map-এ আছে কিনা।console.log(user.has('name')); // true console.log(user.has('address')); // falsedelete(key): একটি নির্দিষ্ট key-value পেয়ার map থেকে মুছে ফেলে।user.delete('age'); console.log(user); // Map { 'name' => 'John' }clear(): map-এর সব key-value পেয়ার মুছে ফেলে।user.clear(); console.log(user); // Map {}size: map-এ কতগুলো key-value পেয়ার আছে তা জানাতে ব্যবহৃত হয়।user.set('name', 'John').set('age', 30); console.log(user.size); // 2forEach(callback): map এর প্রতিটি key-value পেয়ার এর উপর কার্যকরী ফাংশন প্রয়োগ করতে ব্যবহৃত হয়।user.forEach((value, key) => { console.log(`${key}: ${value}`); // name: John, age: 30 });keys(): map এর সব key রিটার্ন করে।const keys = user.keys(); console.log([...keys]); // ['name', 'age']values(): map এর সব value রিটার্ন করে।const values = user.values(); console.log([...values]); // ['John', 30]entries(): map এর সব key-value পেয়ার রিটার্ন করে।const entries = user.entries(); console.log([...entries]); // [['name', 'John'], ['age', 30]]
Set এবং Map এর মধ্যে পার্থক্য
| বৈশিষ্ট্য | Set | Map |
|---|---|---|
| উপাদানের ধরন | শুধুমাত্র unique values | key-value pairs |
| key | থাকে না, শুধুমাত্র values থাকে | থাকে, এবং key যেকোনো ডাটা টাইপ হতে পারে |
| ডুপ্লিকেট উপাদান | ডুপ্লিকেট মান থাকতে পারে না | ডুপ্লিকেট key থাকতে পারে না |
| পদ্ধতি | add(), has(), delete(), clear(), size | set(), get(), has(), delete(), clear(), size |
| অর্ডার | উপাদানগুলি ইনসার্ট অর্ডারে থাকে | key-value পেয়ারগুলি ইনসার্ট অর্ডারে থাকে |
সারাংশ
Set এবং Map হল ES6 এর নতুন ডাটা স্ট্রাকচার যা Array এবং Object থেকে কিছু পার্থক্য নিয়ে এসেছে। Set শুধুমাত্র unique values রাখে এবং Map key-value pairs রাখে। Set এর কিছু সাধারণ মেথড যেমন add(), has(), delete(), এবং Map এর set(), get(), has() মেথড আপনাকে ডাটা পরিচালনার সহজ এবং কার্যকর উপায় দেয়।
Set এবং Map হল ES6 (ECMAScript 2015) এর নতুন ডেটা স্ট্রাকচার, যা ডেটা সংরক্ষণ এবং ম্যানিপুলেশন করার ক্ষেত্রে বেশ শক্তিশালী। এগুলো সাধারণ Object বা Array এর তুলনায় কিছু নতুন সুবিধা প্রদান করে, যেমন ইউনিক আইটেম সংরক্ষণ, দ্রুততর অনুসন্ধান, এবং আরও অনেক কিছু। এখানে Set এবং Map এর ব্যবহার এবং তাদের মধ্যে পার্থক্য সম্পর্কে বিস্তারিত আলোচনা করা হবে।
Set
Set একটি ডেটা স্ট্রাকচার যা শুধুমাত্র ইউনিক (অদ্বিতীয়) মান সংরক্ষণ করে। অর্থাৎ, একটি Set এ একই মান একাধিকবার রাখা যাবে না। এটি একটি iterable অবজেক্ট, যা মান (values) সংরক্ষণ করতে ব্যবহৃত হয়।
Set এর বৈশিষ্ট্য:
- Unordered: Set এ ডেটা unordered থাকে, মানে কোন নির্দিষ্ট অর্ডারে ডেটা থাকে না।
- Unique Values: Set শুধুমাত্র ইউনিক মান রাখে, একই মান একাধিকবার অন্তর্ভুক্ত করা যাবে না।
- Iterable: Set একটি iterable অবজেক্ট, যা loops এর মাধ্যমে সহজেই অ্যাক্সেস করা যায়।
Set এর উদাহরণ:
const numbers = new Set();
numbers.add(1);
numbers.add(2);
numbers.add(3);
numbers.add(2); // Duplicate value, will not be added
console.log(numbers); // Set { 1, 2, 3 }
for (let num of numbers) {
console.log(num); // 1, 2, 3
}
এখানে, numbers একটি Set যা ইউনিক মানগুলো সংরক্ষণ করেছে। add() মেথড ব্যবহার করে মান যোগ করা হয়েছে এবং একই মান একাধিকবার যোগ করার পরেও সেটি শুধুমাত্র একবারই থাকবে।
Set এর কিছু অন্যান্য মেথড:
add(value): একটি মান যোগ করে।has(value): চেক করে, মানটি Set এ আছে কিনা।delete(value): একটি নির্দিষ্ট মান Set থেকে মুছে ফেলে।clear(): সমস্ত মান Set থেকে মুছে দেয়।
const colors = new Set();
colors.add("red");
colors.add("blue");
console.log(colors.has("red")); // true
colors.delete("blue");
console.log(colors); // Set { "red" }
Map
Map একটি ডেটা স্ট্রাকচার যা key-value জোড়া হিসেবে ডেটা সংরক্ষণ করে। এটি কেবলমাত্র ইউনিক কীগুলি রাখে এবং কীগুলির সাথে সংশ্লিষ্ট মানগুলি (values) অ্যাসোসিয়েট করে।
Map এর বৈশিষ্ট্য:
- Ordered: Map এ ডেটা অর্ডার অনুযায়ী থাকে। অর্থাৎ, আইটেমগুলি আপনি যেভাবে অ্যাড করবেন, সেভাবেই থাকবে।
- Key-Value Pair: Map একটি key-value স্ট্রাকচার। মানে, প্রতিটি মান একটি নির্দিষ্ট কী এর সাথে যুক্ত থাকে।
- Any Type as Key: Object এর তুলনায় Map এ কীগুলির জন্য যে কোনো ধরনের মান (যেমন: primitive types, objects, functions) ব্যবহার করা যেতে পারে।
Map এর উদাহরণ:
const person = new Map();
person.set("name", "John");
person.set("age", 30);
person.set("city", "New York");
console.log(person); // Map { "name" => "John", "age" => 30, "city" => "New York" }
console.log(person.get("name")); // "John"
console.log(person.has("age")); // true
এখানে, person একটি Map যেখানে প্রতিটি তথ্য একটি কী এবং মানের জোড়া হিসেবে সংরক্ষিত। set() মেথড ব্যবহার করে key-value পেয়ার যোগ করা হয় এবং get() মেথড দিয়ে কোনো মান খুঁজে পাওয়া যায়।
Map এর কিছু অন্যান্য মেথড:
set(key, value): একটি key-value পেয়ার যোগ করে।get(key): নির্দিষ্ট key এর মান বের করে।has(key): চেক করে, key টি Map এ আছে কিনা।delete(key): একটি key-value পেয়ার মুছে ফেলে।clear(): সমস্ত key-value পেয়ার মুছে দেয়।
const user = new Map();
user.set("id", 101);
user.set("username", "john_doe");
console.log(user.get("id")); // 101
user.delete("username");
console.log(user.has("username")); // false
Set এবং Map এর মধ্যে পার্থক্য
| ফিচার | Set | Map |
|---|---|---|
| সংরক্ষিত ডেটা | ইউনিক মান (values) | key-value জোড়া (key-value pairs) |
| অর্ডার | অর্ডারহীন | ইনসার্ট অর্ডার অনুযায়ী (Ordered) |
| কী হিসেবে ব্যবহার | কীগুলির প্রয়োজন হয় না | কীগুলি ব্যবহার করা হয় (যেকোনো ধরনের) |
| ডুপ্লিকেট | ডুপ্লিকেট মান অনুমোদিত নয় | কীগুলিতে ডুপ্লিকেট অনুমোদিত নয়, কিন্তু ভ্যালুতে হতে পারে |
| হ্যাশিং | নেই | আছে (map এ দ্রুত অ্যাক্সেস সম্ভব) |
| আগ্রহী ডেটা টাইপ | শুধুমাত্র মান (values) | key-value pair (যেকোনো টাইপের key এবং value) |
Set এবং Map এর বাস্তব উদাহরণ
Set এর ব্যবহার:
const fruits = new Set(["apple", "banana", "orange", "apple"]);
console.log(fruits); // Set { "apple", "banana", "orange" }
fruits.add("grape");
console.log(fruits); // Set { "apple", "banana", "orange", "grape" }
fruits.delete("banana");
console.log(fruits); // Set { "apple", "orange", "grape" }
Map এর ব্যবহার:
const userDetails = new Map([
["name", "Alice"],
["age", 25],
["job", "Engineer"]
]);
console.log(userDetails.get("name")); // "Alice"
console.log(userDetails.size); // 3
userDetails.set("city", "London");
console.log(userDetails.get("city")); // "London"
সারাংশ
Set এবং Map হল ES6 এর অত্যন্ত শক্তিশালী ডেটা স্ট্রাকচার যা ডেটা সংরক্ষণ এবং ম্যানিপুলেশনে আরও বেশি ফ্লেক্সিবিলিটি এবং কার্যকারিতা প্রদান করে। Set ইউনিক মান সংরক্ষণ করে, এবং Map কীগুলির সাথে মান সংরক্ষণ করতে সাহায্য করে। প্রতিটি স্ট্রাকচারই বিশেষ কাজে ব্যবহৃত হয় এবং কোডকে আরও কার্যকরী ও পরিষ্কার করে তোলে।
Read more