Σετ JavaScript και WeakSet

Σε αυτό το σεμινάριο, θα μάθετε για τα Σετ JavaScript και τα Αδύνατα Σετ με τη βοήθεια παραδειγμάτων.

Το JavaScript ES6 εισήγαγε δύο νέες δομές δεδομένων, δηλαδή Setκαι WeakSet.

Το σετ είναι παρόμοιο με έναν πίνακα που μας επιτρέπει να αποθηκεύουμε πολλά στοιχεία όπως αριθμούς, συμβολοσειρές, αντικείμενα κ.λπ. Ωστόσο, σε αντίθεση με έναν πίνακα, ένα σύνολο δεν μπορεί να περιέχει διπλές τιμές.

Δημιουργία συνόλου JavaScript

Για να δημιουργήσετε ένα Set, πρέπει να χρησιμοποιήσετε τον new Set()κατασκευαστή. Για παράδειγμα,

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

Όταν οι διπλές τιμές μεταβιβάζονται σε ένα Setαντικείμενο, αποκλείονται οι διπλές τιμές.

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

Στοιχεία συνόλου πρόσβασης

Μπορείτε να αποκτήσετε πρόσβαση σε Setστοιχεία χρησιμοποιώντας τη values()μέθοδο και να ελέγξετε αν υπάρχει κάποιο στοιχείο μέσα στη μέθοδο Setχρήσης has(). Για παράδειγμα,

 const set1 = new Set((1, 2, 3)); // access the elements of a Set console.log(set1.values()); // Set Iterator (1, 2, 3)

Μπορείτε να χρησιμοποιήσετε τη has()μέθοδο για να ελέγξετε αν το στοιχείο βρίσκεται σε ένα σύνολο. Για παράδειγμα,

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

Προσθήκη νέων στοιχείων

Μπορείτε να προσθέσετε στοιχεία σε ένα σύνολο χρησιμοποιώντας τη add()μέθοδο. Για παράδειγμα,

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

Παραγωγή

 Σετ Iterator (1, 2) Σετ Iterator (1, 2, 3) Σετ Iterator (1, 2, 3)

Κατάργηση στοιχείων

Μπορείτε να χρησιμοποιήσετε τη μέθοδο clear()και τη delete()μέθοδο για την κατάργηση στοιχείων από ένα σύνολο.

Η delete()μέθοδος αφαιρεί ένα συγκεκριμένο στοιχείο από ένα Set. Για παράδειγμα,

 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)

Η clear()μέθοδος αφαιρεί όλα τα στοιχεία από ένα Set. Για παράδειγμα,

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

Σετ Iterate

Μπορείτε να επαναλάβετε τα στοιχεία Set χρησιμοποιώντας τη μέθοδο για… of loop ή forEach (). Η πρόσβαση στα στοιχεία γίνεται με τη σειρά εισαγωγής. Για παράδειγμα,

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

Παραγωγή

 1 2 3

WeakSet JavaScript

Το WeakSet είναι παρόμοιο με ένα σετ. Ωστόσο, το WeakSet μπορεί να περιέχει μόνο αντικείμενα, ενώ ένα σύνολο μπορεί να περιέχει τύπους δεδομένων όπως συμβολοσειρές, αριθμούς, αντικείμενα κ.λπ. Για παράδειγμα,

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

Όταν προσπαθείτε να προσθέσετε άλλους τύπους δεδομένων εκτός από αντικείμενα, το WeakSet ρίχνει ένα σφάλμα. Για παράδειγμα,

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

Μέθοδοι WeakSet

WeakSets έχουν μεθόδους add(), delete()και has(). Για παράδειγμα,

 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 δεν είναι επαναλαμβανόμενα. Για παράδειγμα,

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

Λειτουργίες μαθηματικών συνόλων

Στο JavaScript, το Set δεν παρέχει ενσωματωμένες μεθόδους για την εκτέλεση μαθηματικών λειτουργιών όπως ένωση, διασταύρωση, διαφορά κ.λπ. Ωστόσο, μπορούμε να δημιουργήσουμε προγράμματα για την εκτέλεση αυτών των λειτουργιών.

Παράδειγμα: Ορισμός λειτουργίας 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);

Παραγωγή

 Σετ ("μήλο", "μάνγκο", "πορτοκάλι", "σταφύλια", "μπανάνα")

Παράδειγμα: Ορισμός λειτουργίας διατομής

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

Παραγωγή

 Σετ ("μήλο")

Παράδειγμα: Ορισμός λειτουργίας διαφοράς

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

Παραγωγή

 Σετ ("μάνγκο", "πορτοκάλι")

Παράδειγμα: Ορισμός λειτουργίας υποσυνόλου

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

Παραγωγή

 αληθής

JavaScript Setsκαι WeakSetsεισήχθησαν στο ES6 . Ορισμένα προγράμματα περιήγησης ενδέχεται να μην υποστηρίζουν τη χρήση τους. Για να μάθετε περισσότερα, επισκεφτείτε την υποστήριξη JavaScript Sets και την υποστήριξη WeakSets JavaScript.

ενδιαφέροντα άρθρα...