Set JavaScript dan WeakSet

Dalam tutorial ini, anda akan belajar mengenai Set JavaScript dan Kelemahan dengan bantuan contoh.

JavaScript ES6 telah memperkenalkan dua struktur data baru, iaitu Setdan WeakSet.

Set serupa dengan array yang membolehkan kita menyimpan banyak item seperti nombor, rentetan, objek, dll. Namun, tidak seperti array, satu set tidak boleh mengandungi nilai pendua.

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))

Apabila nilai pendua diteruskan ke Setobjek, nilai pendua dikecualikan.

 // Set with duplicate values const set3 = new Set((1, 1, 2, 2)); console.log(set3); // Set (1, 2)

Elemen Set Akses

Anda boleh mengakses Setelemen menggunakan values()kaedah dan memeriksa apakah ada unsur di dalam Setmenggunakan has()kaedah. 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 boleh menggunakan has()kaedah untuk memeriksa apakah elemen tersebut ada dalam Set. Sebagai contoh,

 const set1 = new Set((1, 2, 3)); // check if an element is in Set console.log(set1.has(1));

Menambah Elemen Baru

Anda boleh menambahkan elemen ke Set menggunakan add()kaedah. 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());

Pengeluaran

 Set Iterator (1, 2) Set Iterator (1, 2, 3) Set Iterator (1, 2, 3)

Mengeluarkan Elemen

Anda boleh menggunakan clear()dan delete()kaedah untuk membuang elemen dari Set.

The delete()kaedah membuang unsur tertentu daripada 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()kaedah membuang semua unsur-unsur dari a 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 ()

Set Iterate

Anda dapat melakukan iterasi melalui elemen Set menggunakan kaedah untuk… of loop atau forEach (). Unsur-unsur diakses dalam urutan penyisipan. Sebagai contoh,

 const set = new Set((1, 2, 3)); // looping through Set for (let i of set) ( console.log(i); )

Pengeluaran

 1 2 3

Kelemahan JavaScript

WeakSet serupa dengan Set. Walau bagaimanapun, WeakSet hanya boleh mengandungi objek sedangkan satu Set boleh mengandungi semua jenis data seperti rentetan, nombor, objek, dll. Sebagai contoh,

 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))

Semasa anda cuba menambahkan jenis data lain selain objek, WeakSet melemparkan ralat. 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);

Kaedah Lemah

WeakSets mempunyai kaedah 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 ()

Set Lemah Tidak Boleh Digunakan

Tidak seperti Set, WeakSets tidak boleh berulang. Sebagai contoh,

 const weakSet = new WeakSet((a:1)); // looping through WeakSet for (let i of weakSet) ( // TypeError console.log(i); )

Operasi Set Matematik

Dalam JavaScript, Set tidak menyediakan kaedah bawaan untuk melakukan operasi matematik seperti persatuan, persimpangan, perbezaan, dll. Namun, kita dapat membuat program untuk melakukan operasi tersebut.

Contoh: Tetapkan Operasi Union

 // 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);

Pengeluaran

 Set ("epal", "mangga", "oren", "anggur", "pisang")

Contoh: Tetapkan 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);

Pengeluaran

 Set ("epal")

Contoh: Tetapkan Operasi Perbezaan

 // 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);

Pengeluaran

 Set ("mangga", "oren")

Contoh: Tetapkan 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);

Pengeluaran

 benar

JavaScript Setsdan WeakSetsdiperkenalkan pada ES6 . Beberapa penyemak imbas mungkin tidak menyokong penggunaannya. Untuk mengetahui lebih lanjut, kunjungi sokongan Set JavaScript dan sokongan WeakSets JavaScript.

Artikel menarik...