Dalam tutorial ini, Anda akan belajar tentang JavaScript Sets dan WeakSets dengan bantuan contoh.
JavaScript ES6 telah memperkenalkan dua struktur data baru, yaitu Set
dan WeakSet
.
Set mirip dengan array yang memungkinkan kita menyimpan banyak item seperti angka, string, objek, dll. Namun, tidak seperti array, satu set tidak dapat berisi nilai duplikat.
Buat Set JavaScript
Untuk membuat Set
, Anda perlu menggunakan new Set()
konstruktor. Sebagai contoh,
// create Set const set1 = new Set(); // an empty set console.log(set1); // Set () // Set with multiple types of value const set2 = new Set((1, 'hello', (count : true))); console.log(set2); // Set (1, "hello", (count: true))
Saat nilai duplikat diteruskan ke Set
objek, nilai duplikat akan dikecualikan.
// Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)
Access Set Elements
Anda dapat mengakses Set
elemen menggunakan values()
metode dan memeriksa apakah ada elemen di dalamnya Set
menggunakan has()
metode. Sebagai contoh,
const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)
Anda dapat menggunakan has()
metode ini untuk memeriksa apakah elemen tersebut ada di dalam Set. Sebagai contoh,
const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));
Menambahkan Elemen Baru
Anda dapat menambahkan elemen ke Set menggunakan add()
metode ini. Sebagai contoh,
const set = new Set((1, 2)); console.log(set.values()); // adding new elements set.add(3); console.log(set.values()); // adding duplicate elements // does not add to Set set.add(1); console.log(set.values());
Keluaran
Set Iterator (1, 2) Set Iterator (1, 2, 3) Set Iterator (1, 2, 3)
Menghapus Elemen
Anda dapat menggunakan clear()
dan delete()
metode untuk menghapus elemen dari Set.
The delete()
Metode menghilangkan elemen tertentu dari Set
. Sebagai contoh,
const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // removing a particular element set.delete(2); console.log(set.values()); // Set Iterator (1, 3)
The clear()
Metode menghapus semua elemen dari Set
. Sebagai contoh,
const set = new Set((1, 2, 3)); console.log(set.values()); // Set Iterator (1, 2, 3) // remove all elements of Set set.clear(); console.log(set.values()); // Set Iterator ()
Iterasi Set
Anda dapat melakukan iterasi melalui elemen Set menggunakan for… of loop atau metode forEach (). Elemen diakses dalam urutan penyisipan. Sebagai contoh,
const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )
Keluaran
1 2 3
JavaScript WeakSet
WeakSet mirip dengan Set. Namun, WeakSet hanya dapat berisi objek sedangkan Set dapat berisi tipe data apa pun seperti string, angka, objek, dll. Misalnya,
const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () let obj = ( message: 'Hi', sendMessage: true ) // adding object (element) to WeakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((message: "Hi", sendMessage: true))
Saat Anda mencoba menambahkan tipe data lain selain objek, WeakSet melontarkan kesalahan. Sebagai contoh,
// trying to add string to WeakSet weakSet.add('hello'); // throws error // TypeError: Attempted to add a non-object key to a WeakSet console.log(weakSet);
Metode WeakSet
WeakSets memiliki metode add()
, delete()
dan has()
. Sebagai contoh,
const weakSet = new WeakSet(); console.log(weakSet); // WeakSet () const obj = (a:1); // add to a weakSet weakSet.add(obj); console.log(weakSet); // WeakSet ((a: 1)) // check if an element is in Set console.log(weakSet.has(obj)); // true // delete elements weakSet.delete(obj); console.log(weakSet); // WeakSet ()
WeakSets Tidak Dapat Diulang
Tidak seperti Sets, WeakSets tidak dapat diulang. Sebagai contoh,
const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )
Operasi Himpunan Matematika
Dalam JavaScript, Set tidak menyediakan metode built-in untuk melakukan operasi matematika seperti union, intersection, difference, dll. Namun, kita dapat membuat program untuk melakukan operasi tersebut.
Contoh: Set Union Operation
// perform union operation // contain elements of both sets function union(a, b) ( let unionSet = new Set(a); for (let i of b) ( unionSet.add(i); ) return unionSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = union(setA, setB); console.log(result);
Keluaran
Set ("apel", "mangga", "jeruk", "anggur", "pisang")
Contoh: Atur Operasi Persimpangan
// perform intersection operation // elements of set a that are also in set b function intersection(setA, setB) ( let intersectionSet = new Set(); for (let i of setB) ( if (setA.has(i)) ( intersectionSet.add(i); ) ) return intersectionSet; ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = intersection(setA, setB); console.log(result);
Keluaran
Setel ("apel")
Contoh: Atur Operasi Perbedaan
// perform difference operation // elements of set a that are not in set b function difference(setA, setB) ( let differenceSet = new Set(setA) for (let i of setB) ( differenceSet.delete(i) ) return differenceSet ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('grapes', 'apple', 'banana')); let result = difference(setA, setB); console.log(result);
Keluaran
Setel ("mango", "orange")
Contoh: Atur Operasi Subset
// perform subset operation // true if all elements of set b is in set a function subset(setA, setB) ( for (let i of setB) ( if (!setA.has(i)) ( return false ) ) return true ) // two sets of fruits let setA = new Set(('apple', 'mango', 'orange')); let setB = new Set(('apple', 'orange')); let result = subset(setA, setB); console.log(result);
Keluaran
benar
JavaScript Sets
dan WeakSets
diperkenalkan di ES6 . Beberapa browser mungkin tidak mendukung penggunaannya. Untuk mempelajari lebih lanjut, kunjungi dukungan JavaScript Sets dan dukungan JavaScript WeakSets.