Set JavaScript
Objek Set memungkinkan kita menyimpan nilai-niali unik dari tipe data apa pun entah itu nilai primitif maupun non-primitif.
Bayangkan Set seperti Array, perbedaannya kita tidak bisa menyimpan nilai yang sama dalam satu Set. Contohnya, kita tidak bisa memiliki lebih dari dua buah angka 1.
Karena nilai harus unik, setiap nilai akan diperiksa. Pemeriksaan kesetaraan nilai tidak didasarkan pada algoritma yang sama speerti yang digunakan pada operator kesetaraan ketat (===).
Nilai NaN dan undefined dapat disimpan dalam Set, semua nilai NaN akan dianggap sama meskipun NaN tidak sama dengan NaN (NaN !== NaN).
Properti dan Method Set
| Method | Keterangan |
|---|---|
new Set() | Membuat Set baru |
add() | Menambahkan elemen baru ke Set |
delete() | Menghapus elemen tertentu dari Set |
has() | Mencari elemen tertentu dalam Set apakah ada atau tidak |
clear() | Hapus semua elemen Set |
forEach() | Memanggil fungsi yang disediakan untuk setiap elemen |
values() | Mengembalikan objek iterator baru yang menghasilkan nilai untuk setiap elemen |
keys() | alias untuk values() |
entries() | Mengembalikan objek iterator baru yang berisi array [value, value] untuk setiap elemen |
| Properti | Keterangan |
|---|---|
size | Mengembalikan angka jumlah elemen dalam Set |
new Set() - Membuat Set
Konstruktor Set digunakan untuk membuat objek Set yang menyimpan nilai-nilai unik dari tipe apa pun.
Sintaks
new Set();
// atau
new Set(iterable);
Parameter
iterable(opsional): Objek iterable, jika dilewatkan semua elemen akan ditambahkan ke dalamSet. Jika objek iterable tidak dilewatkan ataunull,Setkosong.
Nilai Kembalian
Mengembalikan objek Set baru.
Contoh
Kita dapat membuat objek Set baru tanpa parameter atau dengan parameter objek iterable.
const myEmptySet = new Set();
// atau
const mySetWithIterable = new Set([1, 2, 3]);
add() - Menambahkan Elemen
Method add() berfungsi untuk menambahkan elemen baru yang diteruskan melalui parameter ke dalam Set, elemen baru akan berada diakhir.
Sintaks
add(nilai);
Parameter
nilai: nilai atau elemen yang ingin ditambahkan ke objekSet.
Nilai Kembalian
Mengembalikan objek Set berisi nilai yang telah ditambahkan.
Contoh
const mySet = new Set();
mySet.add(1);
mySet.add(2).add(3); // bisa di-chain
mySet.add(1); // tes unik
console.log(mySet); // Set(3) { 1, 2, 3 }
delete() - Menghapus Elemen Tertentu
Method delete() berfungsi untuk menghapus elemen tertentu dari objek Set.
Sintaks
delete(nilai);
Parameter
niali: nilai yang akan dihpaus dariSet.
Nilai Kembalian
Mengembalikan nilai true jika nilai berhasil dihapus, false jika nilai tidak ada atau gagal dihapus.
Contoh
const mySet = new Set([1, 2]);
mySet.delete(1);
console.log(mySet); // Set(1) { 2 }
has() - Mengecek Apakah Nilai Tertentu Ada
Method has() berfungsi untuk mengecek apakan elemen atau nilai tertentu yang diteruskan melalui paramter ada dalam Set.
Sintaks
has(nilai);
Parameter
nilai: nilai yang ingin dicari apakah ada dalamSetatau tidak.
Nilai Kembalian
Mengembalikan true jika nilai yang dicari ada dalam Set, atau false jika tidak ada.
Contoh
const students = new Set();
students.add('otong');
students.add('ucup');
students.add('udin');
const isExistsUcup = students.has('ucup');
console.log(isExistsUcup); // true
Saat mencari objek, pastikan merujuk ke objek yang sama agar menghasilkan nilai true, karena jika tidak method ini akan selalu mengembalikan nilai false meskipun nilai dan urutannya sama.
const birds = new Set();
const jalakBali = { name: 'Jalak Bali', origin: 'Bali' };
birds.add(jalakBali);
const isExistsJalak1 = birds.has({ name: 'Jalak Bali', origin: 'Bali' }); // membuat objek baru (beda objek)
const isExistsJalak2 = birds.has(jalakBali); // merujuk ke objek yang sama
console.log(isExistsJalak1); // false
console.log(isExistsJalak2); // true
clear() - Menghapus Semua Elemen
Method clear() menghapus semua elemen dari objek Set.
Sintaks
clear();
Nilai kembalian
Mengembalikan nilai undefined.
Contoh
const mySet = new Set();
mySet.add('hello');
mySet.add('world');
mySet.add(1);
mySet.add(2);
console.log(mySet); // Set(4) { 'hello', 'world', 1, 2 }
mySet.clear();
console.log(mySet); // Set(0) {}
forEach() - Mengeksekusi Fungsi untuk Setiap Elemen
Method forEach() mengeksekusi fungsi yang disediakan sekali untuk setiap elemen dalam objek Set secara berurutan, mirip seperti Array.
Sintaks
// arrow function
forEach((value, key, set) => { ... } )
// callback function
forEach(callbackFn, thisArg)
Parameter
callbackFn: fungsi yang akan dieksekusi untuk setiap elemen, fungsi ini mengambil tiga argumen:valuedankey: elemen saat ini, karenaSettidak memilikikey, nilainya akan sama denganvalue.set: ObjekSetsumber atau yang dipanggil.
thisArg: nilai untukthissaatcallbackFndieksekusi.
Nilai Kembalian
Mengembalikan nilai undefined.
Keterangan
callbackFn akan diseksekusi sekali untuk setiap nilai yang ada di dalam objek Set termasuk undefined. Objek Set tidak memiliki key seperti array, oleh karena itu nilainya akan sama dengan value.
Contoh
const students = new Set();
students.add('ucup');
students.add('budi');
students.add('otong');
students.forEach((value, key, set) => {
console.log('value =', value);
console.log('key =', key);
console.log('set =', set);
console.log('--------------');
});
/* output:
value = ucup
key = ucup
set = Set(3) { 'ucup', 'budi', 'otong' }
--------------
value = budi
key = budi
set = Set(3) { 'ucup', 'budi', 'otong' }
--------------
value = otong
key = otong
set = Set(3) { 'ucup', 'budi', 'otong' }
*/
values() & keys() - Mendapatkan Objek Iterator
Method values() mengembalikan objek iterator baru berisi nilai yang ada di dalam objek Set. Method keys() adalah alias untuk values(), keduanya memiliki perilaku yang sama persis.
Sintaks
values();
Nilai Kembalian
Mengembalikan objek iterator baru berisi nilai yang ada di dalam Set dalam urutan yang sama.
Contoh
const students = new Set();
students.add('ucup');
students.add('budi');
students.add('otong');
const iterator = students.values();
console.log(iterator); // [Set Iterator] { 'ucup', 'budi', 'otong' }
const student1 = iterator.next().value;
const student2 = iterator.next().value;
const student3 = iterator.next().value;
console.log(student1); // ucup
console.log(student2); // budi
console.log(student3); // otong
entries() - Mendapatkan Objek Iterator Berisi Array
Method entries() mengembalikan objek iterator baru yang berisi array [value, value] untuk setiap elemen dalam objek Set.
Karena Set tidak memiliki key seperti objek Map dan untuk menjaga API tetap sama dengan objek Map, kunci dan nilainya sama sehingga mengembalikan array [value, value].
Mirip seperti values() dan keys(), hanya saja entries() membungkus setiap elemen dengan array.
Sintaks
entries();
Nilai Kembalian
Mengembalikan objek iterator baru berisi array [value, value] untuk setiap elemen yang ada di dalam Set dengan urutan yang sama.
Contoh
const students = new Set();
students.add('ucup');
students.add('budi');
students.add('otong');
const iterator = students.entries();
console.log(iterator);
/*
[Set Entries] {
[ 'ucup', 'ucup' ],
[ 'budi', 'budi' ],
[ 'otong', 'otong' ]
}
*/
const student1 = iterator.next().value;
const student2 = iterator.next().value;
const student3 = iterator.next().value;
console.log(student1); // [ 'ucup', 'ucup' ]
console.log(student2); // [ 'budi', 'budi' ]
console.log(student3); // [ 'otong', 'otong' ]
size - Menghitung Jumlah Elemen
Properti size mengembalikan jumlah elemen dalam objek Set. Nilai yang dikembalikan adalah bilangan bulat yang mewakili jumlah elemen yang ada di dalam objek Set.
Contoh
const setNumbers = new Set();
setNumbers.add(1);
setNumbers.add(4);
setNumbers.add(3);
const size = setNumbers.size;
console.log(size); // 3