Set JavaScript dan WeakSet

Dalam tutorial ini, Anda akan belajar tentang JavaScript Sets dan WeakSets dengan bantuan contoh.

JavaScript ES6 telah memperkenalkan dua struktur data baru, yaitu Setdan 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 Setobjek, 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 Setelemen menggunakan values()metode dan memeriksa apakah ada elemen di dalamnya Setmenggunakan 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 Setsdan WeakSetsdiperkenalkan di ES6 . Beberapa browser mungkin tidak mendukung penggunaannya. Untuk mempelajari lebih lanjut, kunjungi dukungan JavaScript Sets dan dukungan JavaScript WeakSets.

Artikel yang menarik...