← Kembali ke kursus
Pelajaran kursus · JavaScript
Pelajaran 23

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`.