Kodealgo

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

MethodKeterangan
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
PropertiKeterangan
sizeMengembalikan 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 dalam Set. Jika objek iterable tidak dilewatkan atau null, 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 objek Set.

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 dari Set.

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 dalam Set 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 dan key: elemen saat ini, karena Set tidak memiliki key, nilainya akan sama dengan value.
    • set: Objek Set sumber atau yang dipanggil.
  • thisArg: nilai untuk this saat callbackFn 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