Diterbitkan pada

Set JavaScript: dasar untuk pengembang pemula

Penulis

Mengapa Set?

Set adalah struktur data yang memungkinkan Anda menyimpan nilai unik dari berbagai tipe. Mirip dengan array, tetapi tidak mengizinkan nilai duplikat. Cara yang bagus untuk menyimpan nilai unik dari berbagai jenis. Terkadang Anda ingin menyimpan nilai unik dalam array, tetapi Anda tidak ingin mengulang array untuk memeriksa apakah nilai tersebut sudah ada. Di sinilah Set berguna.

Dalam artikel sebelumnya, kita membahas Javascript Map. Set mirip dengan Map, tetapi hanya menyimpan kunci, bukan nilainya. Cara yang bagus untuk menyimpan nilai unik dari berbagai tipe. Terkadang menggunakan Map bisa jadi rumit. Itulah sebabnya kita akan membahas Set.

Apa itu JavaScript Set?

Objek Set adalah kumpulan nilai. Sebuah nilai di Set hanya boleh muncul satu kali; nilainya unik di kumpulan Set. Anda dapat mengulang melalui elemen set dalam urutan penyisipan. Urutan penyisipan sesuai dengan urutan di mana setiap bagian disisipkan ke dalam Set oleh metode add() dengan sukses (yaitu, tidak ada elemen identik yang sudah ada di Set ketika Set memanggil add()).

Spesifikasi mensyaratkan agar set diimplementasikan "yang, rata-rata, menyediakan waktu akses yang sublinear pada jumlah elemen dalam koleksi." Oleh karena itu, set tersebut dapat diwakili secara internal sebagai tabel hash (dengan pencarian O(1)), pohon pencarian (dengan pencarian O(log(N))), atau struktur data lainnya, selama kompleksitasnya lebih baik daripada O(N).

Cara Membuat Set?

Ada dua cara untuk membuat Set. Cara pertama adalah menggunakan konstruktor Set. Cara kedua adalah menggunakan literal objek Set.

Konstruktor Set

Konstruktor Set membuat objek Set baru. Anda dapat meneruskan objek yang dapat diulang sebagai argumen ke konstruktor. Elemen objek yang dapat diulang akan ditambahkan ke Set baru.

const set = new Set([1, 2, 3, 4, 5])

Literal Objek Set

Literal objek Set membuat objek Set baru. Anda dapat meneruskan objek yang dapat diulang sebagai argumen ke literal objek. Elemen objek yang dapat diulang akan ditambahkan ke Set baru.

const set = {1, 2, 3, 4, 5};

Metode & Properti Set

MetodeDeskripsi
add()Menambahkan elemen baru dengan nilai tertentu ke objek Set.
clear()Menghapus semua elemen dari objek Set.
delete()Menghapus elemen yang terkait dengan nilai dan mengembalikan nilai yang sebelumnya akan dikembalikan oleh Set.prototype.has(value). Set.prototype.has(value) akan mengembalikan false setelahnya.
entries()Mengembalikan objek Iterator baru yang berisi array dari [value, value] untuk setiap elemen dalam objek Set, dalam urutan penyisipan.
forEach()Menjalankan fungsi yang disediakan sekali per setiap nilai dalam objek Set, dalam urutan penyisipan.
has()Mengembalikan boolean yang menyatakan apakah suatu elemen ada dengan nilai yang diberikan dalam objek Set.
keys()Mengembalikan objek Iterator baru yang berisi nilai untuk setiap elemen dalam objek Set dalam urutan penyisipan.
values()Mengembalikan objek Iterator baru yang berisi nilai untuk setiap elemen dalam objek Set dalam urutan penyisipan.
PropertiDeskripsi
sizeMengembalikan jumlah nilai dalam objek Set.

Contoh Set

Menambahkan Nilai ke Set

const set = new Set([1, 2, 3, 4, 5])
set.add(6)
console.log(Set) // Set { 1, 2, 3, 4, 5, 6 }

Menghapus Nilai dari Set

const set = new Set([1, 2, 3, 4, 5])
set.delete(3)
console.log(set) // Set { 1, 2, 4, 5 }

Memeriksa Apakah Suatu Nilai Ada di Set

const set = new Set([1, 2, 3, 4, 5])
console.log(set.has(3)) // true

Mengulang melalui Set

const set = new Set([1, 2, 3, 4, 5])
for (const item of Set) {
  console.log(item)
}
// 1
// 2
// 3
// 4
// 5

Mengonversi Set ke Array

const set = new Set([1, 2, 3, 4, 5])
const array = Array.from(set)
console.log(array) // [1, 2, 3, 4, 5]

Mengonversi Array ke Set

const Array = [1, 2, 3, 4, 5]
const set = new Set(array)
console.log(Set) // Set { 1, 2, 3, 4, 5 }

Mendapatkan Ukuran Set

const set = new Set([1, 2, 3, 4, 5])
console.log(set.size) // 5

Mengosongkan Set

const set = new Set([1, 2, 3, 4, 5])
set.clear()
console.log(set) // Set {}

Menggabungkan Set

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([6, 7, 8, 9, 10])
const set3 = new Set([...set1, ...set2])
console.log(set3) // Set { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }

Mendapatkan Irisan dari Dua Set

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5, 6, 7, 8])
const set3 = new Set([...set1].filter((x) => set2.has(x)))
console.log(set3) // Set { 4, 5 }

Mendapatkan Perbedaan antara Dua Set

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5, 6, 7, 8])
const set3 = new Set([...set1].filter((x) => !set2.has(x)))
console.log(set3) // Set { 1, 2, 3 }

Memeriksa Apakah Set adalah Subset dari Set Lain

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set2].every((x) => set1.has(x))) // true

Memeriksa Apakah Set adalah Superset dari Set Lain

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([4, 5])
console.log([...set1].every((x) => set2.has(x))) // false

Memeriksa Apakah Dua Set Saling Terpisah

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([6, 7, 8, 9, 10])
console.log([...set1].every((x) => !set2.has(x))) // true

Memeriksa Apakah Dua Set Sama

const set1 = new Set([1, 2, 3, 4, 5])
const set2 = new Set([1, 2, 3, 4, 5])
console.log(set1.size === set2.size && [...set1].every((x) => set2.has(x))) // true

Dukungan Browser

ChromeChromeFirefoxFirefoxEdgeEdgeSafariSafariOperaOpera
49+44+12+10.1+36+

Set vs. Array

SetArray
Nilai unik, tidak mengizinkan nilai duplikatMengizinkan nilai duplikat
Set adalah kumpulan nilai tanpa urutan tertentuArray adalah kumpulan nilai dalam urutan tertentu
Set dapat diulangArray dapat diulang
Set lebih lambat daripada array dalam inisialisasi karena menggunakan proses hash.Array lebih cepat dalam hal inisialisasi
Performa lebih baik saat memeriksa keberadaan suatu elemenPerforma lebih baik saat mengakses elemen

Artikel ini awalnya diterbitkan di blog.imam.dev.

Referensi

  1. Mozilla Developer Network - Set

  2. W3Schools - Set

  3. ECMAScript® 2015 Language Specification - Set