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
,Set
kosong.
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 dalamSet
atau 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:value
dankey
: elemen saat ini, karenaSet
tidak memilikikey
, nilainya akan sama denganvalue
.set
: ObjekSet
sumber atau yang dipanggil.
thisArg
: nilai untukthis
saatcallbackFn
dieksekusi.
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