- Diterbitkan pada
Set JavaScript: dasar untuk pengembang pemula
- Penulis
- Nama
- Imamuzzaki Abu Salam
- https://x.com/ImBIOS_Dev
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
Metode | Deskripsi |
---|---|
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. |
Properti | Deskripsi |
---|---|
size | Mengembalikan 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
Chrome | Firefox | Edge | Safari | Opera |
---|---|---|---|---|
49+ | 44+ | 12+ | 10.1+ | 36+ |
Set vs. Array
Set | Array |
---|---|
Nilai unik, tidak mengizinkan nilai duplikat | Mengizinkan nilai duplikat |
Set adalah kumpulan nilai tanpa urutan tertentu | Array adalah kumpulan nilai dalam urutan tertentu |
Set dapat diulang | Array 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 elemen | Performa lebih baik saat mengakses elemen |
Artikel ini awalnya diterbitkan di blog.imam.dev.