JavaScriptModern JavaScript
Q48. What are Map and Set, and how are they different from objects and arrays?
key-value collection ও unique value collection — object ও array-র চেয়ে সুবিধা কোথায়।
Map হলো key-value pair রাখার collection, যেখানে key যেকোনো ধরনের হতে পারে। আর Set হলো এমন collection যেখানে unique মানই থাকে — ডুপ্লিকেট স্বয়ংক্রিয়ভাবে বাদ পড়ে। দুটোই ES6-এ এসেছে এবং object ও array-র চেয়ে অনেক বেশি সুবিধাজনক।
object বনাম Mapjavascript
javascript
// object-এ সমস্যা
const store = {};
store["1"] = "এক";
store["true"] = "সত্য";
console.log(store[1]); // "এক" — key সংখ্যা হয়ে গেল
console.log(store["1"]); // "এক"
console.log(Object.keys(store)); // ["1", "true"] — ক্রম নিশ্চিত নয়
// Map-এ key আসল থাকে
const map = new Map();
map.set(1, "এক");
map.set(true, "সত্য");
console.log(map.get(1)); // "এক"
console.log(map.get(true)); // "সত্য"ধাপে ধাপে — object-এ key সবসময় string বা symbol-এ ঢালতে হয়, তাই সংখ্যা 1 আর string "1" এক হয়ে যায়। Map-এ key-এর আসল ধরন বজায় থাকে, তাই 1 আর true পৃথক key হিসেবে থাকে।
বিভিন্ন ধরনের keyjavascript
javascript
// Map-এ যেকোনো ধরনের key দেওয়া যায়
const users = new Map();
const user = { name: "Rahim" };
users.set(user, { role: "admin" }); // object key
users.set("name", "Rahim");
users.set(10, "দশ");
users.set(Symbol("id"), 5);
console.log(users.size); // 4
console.log(users.get(user).role); // "admin"Map APIjavascript
javascript
// সব method
const map = new Map([
["a", 1],
["b", 2],
]);
map.set("c", 3);
console.log(map.get("a")); // 1
console.log(map.has("a")); // true
console.log(map.size); // 3
map.delete("a");
console.log(map.size); // 2
map.clear();
console.log(map.size); // 0iterationjavascript
javascript
// for...of দিয়ে ঘোরা — key-value জোড়া পাওয়া যায়
const map = new Map([
["a", 1],
["b", 2],
]);
for (const [key, value] of map) {
console.log(key, value); // "a" 1, তারপর "b" 2
}
// entry ধরনে
for (const entry of map) {
console.log(entry[0], entry[1]);
}
// শুধু key বা value
for (const key of map.keys()) console.log(key);
for (const value of map.values()) console.log(value);Setjavascript
javascript
// Set — unique value রাখে
const set = new Set([1, 2, 3, 2, 1]);
console.log(set.size); // 3 — ডুপ্লিকেট বাদ
set.add(4);
console.log(set.has(2)); // true
set.delete(2);
console.log([...set]); // [1, 3, 4]duplicate সরানোjavascript
javascript
// Set-এর সবচেয়ে বড় ব্যবহার — duplicate সরানো
const numbers = [1, 2, 2, 3, 3, 3, 4];
const unique = [...new Set(numbers)];
console.log(unique); // [1, 2, 3, 4]
// object-এর key unique রাখা
const uniqueIds = new Set([1, 2, 3, 2]);
console.log(uniqueIds.size); // 3Set বনাম arrayjavascript
javascript
// Set বনাম Array — কখন কোনটি
const list = ["a", "a", "b"]; // ডুপ্লিকেট রাখতে চাইলে
const set = new Set(["a", "a", "b"]); // unique রাখতে চাইলে
console.log(list.length); // 3 — ডুপ্লিকেট সহ
console.log(set.size); // 2 — unique| বিষয় | Map | object | Set | array |
|---|---|---|---|---|
| ধরন | key-value | key-value | unique value | list |
| key | যেকোনো ধরন | শুধু string/symbol | key থাকে না | index |
| আকার | .size | Object.keys().length | .size | .length |
| iteration | for...of | for...in | for...of | for...of |
| ক্রম | insertion | অনির্দিষ্ট | insertion | index |
মনে রাখুন
key গুরুত্বপূর্ণ হলে বা যেকোনো ধরনের key দরকার হলে Map ব্যবহার করুন, আর duplicate বাদ দিতে Set। সাধারণ তালিকা বা শুধু { id, name } ধরনের নির্দিষ্ট গঠন হলে object ও array-ই যথেষ্ট এবং সবার সাথে সহজে কাজ করে।
শেষ প্যারায় নিজে practice করুন — কোড কপি করে নিজের এডিটরে চালিয়ে দেখুন।