Day 26

Map & Set

11 min
JavaScript 100 Days

Map aur Set ES6 ke naye data structures hain. Map key-value pairs store karta hai lekin keys koi bhi type ho sakti hai (object bhi!). Set unique values ka collection hai — duplicates automatically remove ho jaate hain.

Map — Any Key Type

Map mein objects, functions bhi keys ho sakti hain. Order maintain hota hai. Size property hai.

map.js
javascript
let map = new Map();

// Set values
map.set("name", "Zohaib");
map.set(42, "the answer");
map.set(true, "boolean key");

let obj = { id: 1 };
map.set(obj, "object as key!"); // ✅ possible

// Get values
console.log(map.get("name")); // "Zohaib"
console.log(map.get(42));     // "the answer"
console.log(map.size);        // 4

// Check & delete
console.log(map.has("name")); // true
map.delete("name");

// Iterate
map.forEach((value, key) => {
  console.log(`${key}: ${value}`);
});

// Object to Map
let user = { name: "Ali", age: 25 };
let userMap = new Map(Object.entries(user));

Set — Unique Values

Set mein duplicate values automatically ignore hoti hain. Array se duplicates remove karne ka best way.

set.js
javascript
let set = new Set([1, 2, 3, 2, 1, 3]);
console.log(set);      // Set {1, 2, 3} — duplicates gone!
console.log(set.size); // 3

set.add(4);
set.delete(1);
console.log(set.has(2)); // true

// Array se duplicates remove karo
let arr = [1, 2, 2, 3, 3, 4, 4, 5];
let unique = [...new Set(arr)];
console.log(unique); // [1, 2, 3, 4, 5]

// Iterate
for (let item of set) {
  console.log(item);
}

// Intersection (common elements)
let a = new Set([1, 2, 3, 4]);
let b = new Set([3, 4, 5, 6]);
let intersection = new Set([...a].filter(x => b.has(x)));
console.log([...intersection]); // [3, 4]

🎯 Practice Challenge

Users array hai with duplicate emails. Set use karke unique emails nikalo. Map use karke user data ko email key se store karo.