Map dan Set
Map (kunci apa pun) dan Set (nilai unik).
Pahami konsepnya
Map adalah dictionary dengan kunci TIDAK TERBATAS string — objek, fungsi, NaN semuanya sah sebagai kunci. Set adalah koleksi nilai unik — duplikat otomatis dihilangkan. Keduanya iterable (for-of, spread) dan punya property size.
Map vs objek: Map menjaga urutan penyisipan, punya .size, mudah diiterasi, dan kunci tak dibebani prototype chain. Gunakan Map untuk data dinamis yang kuncinya berasal dari runtime; gunakan objek untuk struktur tetap.
WeakMap dan WeakSet tidak mencegah garbage collection — bila kunci tak lagi direferensikan di tempat lain, entri otomatis dihapus. Cocok untuk metadata yang menempel pada objek tanpa mencegah pembersihan memori.
Coba contoh kode
const m = new Map();
m.set("nama", "Ari");
m.set(42, "angka sebagai kunci");
m.set({ id: 1 }, "objek sebagai kunci");
console.log(m.get("nama"));
console.log(m.size);
for (const [k, v] of m) console.log(k, "->", v);
const s = new Set([1, 2, 2, 3, 3, 3]);
console.log(s); // {1, 2, 3}
console.log(s.size); // 3
console.log(s.has(2)); // true
// deduplikasi array
const duplikat = [1, 2, 2, 3, 3];
console.log([...new Set(duplikat)]); // [1,2,3]Map menerima objek sebagai kunci — hal yang tidak bisa objek biasa (kunci objek selalu string). Set otomatis menghilangkan duplikat: [...new Set(arr)] adalah idiom deduplikasi satu baris.
Latihan singkat
Uji: new Set([1,2,2,3,3,3]).size — harus `3`.