🗃️ JavaScript Collections: Set, WeakSet, Map, WeakMap

Last Updated: 26th October 2025


JavaScript provides special objects to store collections of data in different ways:

  • Set / WeakSet → store unique values
  • Map / WeakMap → store key-value pairs

Hinglish Tip 🗣: Socho jaise cupboards → Set me ek type ka item ek hi baar; Map me har item ka label (key) hota hai.


Set

  • Stores unique values of any type.
  • Iterable → can loop with for...of.
  • No duplicate values allowed.

Syntax:

const mySet = new Set([1, 2, 3]);
mySet.add(4);
mySet.add(2); // ignored, duplicate
console.log(mySet); // Set {1, 2, 3, 4}

Common Methods:

  • add(value) → add a value
  • delete(value) → remove a value
  • has(value) → check existence
  • clear() → remove all values
  • size → number of values

WeakSet

  • Similar to Set but only stores objects.
  • Not iterable → cannot use for...of.
  • Garbage collected if no other references exist.
let obj1 = { a: 1 };
let obj2 = { b: 2 };

const myWeakSet = new WeakSet([obj1]);
myWeakSet.add(obj2);

console.log(myWeakSet.has(obj1)); // true

Hinglish Tip 🗣: WeakSet temporary storage jaise hai — object delete ho gaya to automatically remove ho jaata hai.


Map

  • Stores key-value pairs.
  • Keys can be any type (object, number, string, etc.).
  • Iterable → can loop with for...of.

Syntax:

const myMap = new Map();
myMap.set("name", "Amit");
myMap.set(1, "NumberOne");
myMap.set({}, "ObjectKey");

console.log(myMap.get("name")); // Amit
console.log(myMap.has(1)); // true
console.log(myMap.size); // 3

Common Methods:

  • set(key, value) → add a key-value pair
  • get(key) → get the value for a key
  • has(key) → check existence
  • delete(key) → remove a key-value pair
  • clear() → remove all key-value pairs
  • size → number of key-value pairs

WeakMap

  • Similar to Map but only stores objects as keys.
  • Not iterable → cannot use for...of.
  • Garbage collected if no other references exist.
let keyObj = {};
const myWeakMap = new WeakMap();
myWeakMap.set(keyObj, "secret");

console.log(myWeakMap.get(keyObj)); // secret

Hinglish Tip 🗣: WeakMap sensitive info store karne ke liye best — memory automatically manage hoti hai.


💡 Quick Practice

  • Create a Set with numbers [1,2,2,3] → see how duplicates are removed.
  • Create a WeakSet with objects → check existence.
  • Create a Map with keys 1, 'a', → print all values.
  • Create a WeakMap with object keys → retrieve a value.