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

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

Εδώ έχουμε ένα παράδειγμα δημιουργίας και χρήσης ενός Set:

const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(3);
mySet.add(2); // Δεν προστίθεται, καθώς η τιμή 2 υπάρχει ήδη στο Set

console.log(mySet); // Set { 1, 2, 3 }

console.log(mySet.has(2)); // true, η τιμή 2 υπάρχει στο Set

mySet.delete(3);
console.log(mySet); // Set { 1, 2 }

console.log(mySet.size); // 2, το μέγεθος του Set είναι 2

mySet.clear();
console.log(mySet); // Set {}, το Set είναι τώρα άδειο

Στο παράδειγμα αυτό, δημιουργούμε ένα Set και προσθέτουμε μερικές τιμές σε αυτό χρησιμοποιώντας την μέθοδο add(). Σημειώστε ότι δεν επιτρέπεται η προσθήκη διπλοτύπων τιμών στο Set. Χρησιμοποιούμε την μέθοδο has() για να ελέγξουμε εάν μια συγκεκριμένη τιμή υπάρχει στο Set, και την μέθοδο delete() για να αφαιρέσουμε μια τιμή από το Set. Η ιδιότητα size επιστρέφει τον αριθμό των μοναδικών τιμών που υπάρχουν στο Set. Η μέθοδος clear() αφαιρεί όλες τις τιμές από το Set, καθιστώντας το άδειο.

Τα Sets χρησιμοποιούνται συχνά για να αποφύγουν διπλότυπες εγγραφές και να εκτελέσουν γρήγορες αναζητήσεις για την ύπαρξη τιμών.

Η μέθοδος new Set() χρησιμοποιείται για να δημιουργήσει ένα νέο Set, που είναι μια δομή δεδομένων που περιέχει μοναδικές τιμές, χωρίς διπλότυπες εγγραφές. Η μέθοδος αυτή είναι η κατασκευή (constructor) της κλάσης Set.

[adinserter block=”2″]

Αν θέλετε να δημιουργήσετε ένα νέο κενό Set, μπορείτε να το κάνετε με την ακόλουθη σύνταξη:

const mySet = new Set();

Μπορείτε επίσης να δημιουργήσετε ένα Set με αρχικές τιμές που περιέχονται σε έναν πίνακα, χρησιμοποιώντας την ακόλουθη σύνταξη:

const mySet = new Set([1, 2, 3]);

Στο παράδειγμα αυτό, δημιουργούμε ένα Set με τις αρχικές τιμές 1, 2 και 3.

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

Η μέθοδος add() χρησιμοποιείται για να προσθέσετε μια νέα τιμή σε ένα Set. Αν η τιμή που προσπαθείτε να προσθέσετε υπάρχει ήδη στο Set, τότε δεν προστίθεται και το Set παραμένει αμετάβλητο.

Η σύνταξη για την προσθήκη τιμής σε ένα Set είναι:

mySet.add(value);

Παρακάτω είναι ένα παράδειγμα:

const mySet = new Set();
mySet.add(1);
mySet.add(2);
mySet.add(3);

console.log(mySet); // Set { 1, 2, 3 }

Στο παράδειγμα αυτό, δημιουργούμε ένα κενό Set και στη συνέχεια προσθέτουμε τις τιμές 1, 2 και 3 με την μέθοδο add(). Αφού προσθέσουμε τις τιμές, το Set περιέχει τις τιμές 1, 2 και 3. Παρατηρήστε ότι αν προσπαθούσαμε να προσθέσουμε ξανά την τιμή 2, το Set θα παρέμενε άθικτο και δεν θα είχε διπλότυπες τιμές.

Η μέθοδος forEach() χρησιμοποιείται για να επαναλάβετε ένα Set και να εκτελέσετε μια συνάρτηση για κάθε στοιχείο του Set. Η σύνταξη της μεθόδου forEach() είναι:

mySet.forEach(callbackFunction);

Η callbackFunction είναι μια συνάρτηση που ορίζετε εσείς και θα καλείται για κάθε στοιχείο του Set. Η callbackFunction παίρνει τρία ορίσματα: το τρέχον στοιχείο, το αντίστοιχο κλειδί και το ίδιο το Set. Μπορείτε να χρησιμοποιήσετε αυτά τα ορίσματα για να εκτελέσετε κάποιες ενέργειες με βάση τα δεδομένα του Set.

Παρακάτω είναι ένα παράδειγμα:

const mySet = new Set();
mySet.add("apple");
mySet.add("banana");
mySet.add("orange");

mySet.forEach((value, key, set) => {
  console.log(value);
});

// Output:
// apple
// banana
// orange

Στο παράδειγμα αυτό, δημιουργούμε ένα Set και προσθέτουμε τις τιμές “apple”, “banana” και “orange”. Στη συνέχεια, χρησιμοποιούμε τη μέθοδο forEach() για να επαναλάβουμε το Set και να εμφανίσουμε κάθε στοιχείο στην κονσόλα.

Η μέθοδος values() ενός Set αντιστοιχεί στη μέθοδο values() ενός Map και επιστρέφει έναν Iterator που περιέχει όλες τις τιμές των στοιχείων στο Set, σε τυχαία σειρά. Η σύνταξη είναι:

mySet.values();

Αυτό σημαίνει ότι μπορείτε να χρησιμοποιήσετε τον Iterator για να επαναλάβετε τις τιμές του Set με τη χρήση μιας δομής επανάληψης (π.χ. for…of) ή της μεθόδου forEach().

Παράδειγμα:

const mySet = new Set();
mySet.add("apple");
mySet.add("banana");
mySet.add("orange");

const setValuesIterator = mySet.values();
for (const value of setValuesIterator) {
  console.log(value);
}

// Output:
// apple
// banana
// orange

Στο παράδειγμα αυτό, δημιουργούμε ένα Set και προσθέτουμε τις τιμές “apple”, “banana” και “orange”. Στη συνέχεια, χρησιμοποιούμε τη μέθοδο values() για να αποκτήσουμε έναν Iterator που περιέχει τις τιμές των στοιχείων. Στη συνέχεια, χρησιμοποιούμε μια δομή for…of για να επαναλάβουμε τις τιμές του Iterator και να τις εμφανίσουμε στην κονσόλα.

[adinserter block=”3″]

Τα Map στην JavaScript είναι μια δομή δεδομένων που σας επιτρέπει να αποθηκεύσετε κλειδιά-τιμές όπου το κλειδί και η τιμή μπορεί να είναι οποιοδήποτε τύπος δεδομένων, και οι τιμές προσπελάζονται με βάση το κλειδί.

Για να δημιουργήσετε ένα νέο Map, μπορείτε να χρησιμοποιήσετε την Map() κατασκευαστική συνάρτηση, όπως παρακάτω:

const myMap = new Map();

Μπορείτε να προσθέσετε ζευγάρια κλειδιού-τιμής στο Map χρησιμοποιώντας τη μέθοδο set():

myMap.set("key1", "value1");
myMap.set("key2", "value2");
myMap.set("key3", "value3");

Για να προσπελάσετε μια τιμή στο Map, μπορείτε να χρησιμοποιήσετε τη μέθοδο get() δίνοντας το αντίστοιχο κλειδί:

const value = myMap.get("key1");
console.log(value); // Output: value1

Για να ελέγξετε αν υπάρχει ένα κλειδί στο Map, μπορείτε να χρησιμοποιήσετε τη μέθοδο has():

const hasKey = myMap.has("key1");
console.log(hasKey); // Output: true

Για να διαγράψετε ένα κλειδί και την αντίστοιχη τιμή από το Map, μπορείτε να χρησιμοποιήσετε τη μέθοδο delete():

myMap.delete("key2");

Τέλος, μπορείτε να προσπελάσετε όλα τα ζευγάρια κλειδιού-τιμής στο Map με τη χρήση του Iterator που παρέχεται από τη μέθοδο entries():

for (const [key, value] of myMap.entries()) {
  console.log(`${key}: ${value}`);
}

Η μέθοδος entries() επιστρέφει έναν Iterator που περιέχει έναν πίνακα με ζευγάρια [key, value] για κάθε κλειδί-τιμή στο Map, τα οποία μπορούν να αναλυθούν με τη χρήση της δομής for...of.

Η μέθοδος new Map() χρησιμοποιείται για να δημιουργήσει ένα νέο αντικείμενο Map στην JavaScript. Το Map είναι μια δομή δεδομένων που σας επιτρέπει να αποθηκεύσετε κλειδιά-τιμές, όπου το κλειδί και η τιμή μπορεί να είναι οποιοδήποτε τύπος δεδομένων.

Για παράδειγμα, για να δημιουργήσετε ένα νέο Map:

const myMap = new Map();

Επίσης, μπορείτε να περάσετε έναν πίνακα ζευγαριών κλειδιού-τιμής ως όρισμα στον κατασκευαστή Map:

const myMap = new Map([
  ["key1", "value1"],
  ["key2", "value2"],
  ["key3", "value3"]
]);

Μπορείτε επίσης να χρησιμοποιήσετε τη μέθοδο set() για να προσθέσετε ζευγάρια κλειδιού-τιμής στο Map:

const myMap = new Map();
myMap.set("key1", "value1");
myMap.set("key2", "value2");
myMap.set("key3", "value3");

Το Map διατηρεί τη σειρά εισαγωγής των κλειδιών, έτσι ώστε να μπορείτε να προσπελάσετε τις τιμές του με τη σειρά που τις προσθέσατε.

Για να προσπελάσετε μια τιμή στο Map, χρησιμοποιήστε τη μέθοδο get() δίνοντας το αντίστοιχο κλειδί:

const value = myMap.get("key1");
console.log(value); // Output: value1

Για να ελέγξετε αν υπάρχει ένα κλειδί στο Map, χρησιμοποιήστε τη μέθοδο has():

const hasKey = myMap.has("key2");
console.log(hasKey); // Output: true

Για να διαγράψετε ένα κλειδί και την αντίστοιχη τιμή από το Map, χρησιμοποιήστε τη μέθοδο delete():

myMap.delete("key3");

Τέλος, μπορείτε να προσπελάσετε όλα τα ζευγάρια κλειδιού-τιμής στο Map με τη χρήση του Iterator που παρέχεται από τη μέθοδο entries():

for (const [key, value] of myMap.entries()) {
  console.log(`${key}: ${value}`);
}

Η μέθοδος entries() επιστρέφει έναν Iterator που περιέχει έναν πίνακα με ζευγάρια [key, value] για κάθε κλειδί-τιμή στο Map, τα οποία μπορούν να αναλυθούν με τη χρήση της δομής for...of.

Η μέθοδος get() χρησιμοποιείται για να προσπελάσετε την τιμή που σχετίζεται με ένα κλειδί σε ένα αντικείμενο Map. Η σύνταξη είναι η εξής:

myMap.get(key);

όπου myMap είναι το αντικείμενο Map και key είναι το κλειδί που θέλουμε να προσπελάσουμε. Η μέθοδος επιστρέφει την τιμή που σχετίζεται με το κλειδί, ή undefined εάν το κλειδί δεν βρίσκεται στο Map.

Παράδειγμα:

const myMap = new Map();
myMap.set("name", "John");
myMap.set("age", 30);

const name = myMap.get("name");
const age = myMap.get("age");
const occupation = myMap.get("occupation");

console.log(name); // Output: John
console.log(age); // Output: 30
console.log(occupation); // Output: undefined

Στο παράδειγμα παραπάνω, προσπελαύνουμε τις τιμές που αντιστοιχούν στα κλειδιά "name" και "age" και εμφανίζουμε τα αποτελέσματα στην κονσόλα. Ωστόσο, το κλειδί "occupation" δεν υπάρχει στο Map, οπότε η μέθοδος get() επιστρέφει undefined.

[adinserter block=”4″]

Αξίζει να σημειωθεί ότι η μέθοδος get() επιστρέφει την τιμή με βάση την αναγνωριστική συγκρίση, οπότε εάν περάσετε έναν αριθμό ως κλειδί, η μέθοδος θα εξετάσει το αναγνωριστικό του αριθμού και όχι την τιμή του.

Η ιδιότητα size χρησιμοποιείται για να επιστρέψει τον αριθμό των στοιχείων που περιέχονται σε ένα αντικείμενο Map. Η σύνταξη είναι η εξής:

myMap.size;

όπου myMap είναι το αντικείμενο Map για το οποίο θέλουμε να γνωρίζουμε τον αριθμό των στοιχείων που περιέχει. Η ιδιότητα size επιστρέφει έναν ακέραιο που αντιπροσωπεύει τον αριθμό των στοιχείων.

Παράδειγμα:

const myMap = new Map();
myMap.set("name", "John");
myMap.set("age", 30);
myMap.set("occupation", "Engineer");

const numberOfElements = myMap.size;

console.log(numberOfElements); // Output: 3

Στο παράδειγμα παραπάνω, έχουμε ένα αντικείμενο Map με τρία στοιχεία. Χρησιμοποιούμε την ιδιότητα size για να αντλήσουμε τον αριθμό των στοιχείων και το εμφανίζουμε στην κονσόλα. Το αποτέλεσμα είναι 3, καθώς το Map περιέχει τρία στοιχεία.

Η μέθοδος delete() χρησιμοποιείται για να διαγράψει ένα στοιχείο από ένα αντικείμενο Map. Αν το στοιχείο που διαγράφετε βρίσκεται στο Map, τότε η μέθοδος επιστρέφει true, διαφορετικά επιστρέφει false.

Η σύνταξη είναι η εξής:

myMap.delete(key);

όπου myMap είναι το αντικείμενο Map από το οποίο θέλετε να διαγράψετε το στοιχείο, και key είναι το κλειδί (key) του στοιχείου που θέλετε να διαγράψετε.

Παράδειγμα:

const myMap = new Map();
myMap.set("name", "John");
myMap.set("age", 30);
myMap.set("occupation", "Engineer");

const isDeleted = myMap.delete("age");

console.log(isDeleted); // Output: true
console.log(myMap.size); // Output: 2

Στο παράδειγμα παραπάνω, χρησιμοποιούμε τη μέθοδο delete() για να διαγράψουμε το στοιχείο με το κλειδί “age” από το Map. Η μέθοδος επιστρέφει true, διότι το στοιχείο βρίσκεται στο Map και διαγράφεται επιτυχώς. Στη συνέχεια, εμφανίζουμε τον αριθμό των στοιχείων με την ιδιότητα size, που επιστρέφει 2 καθώς έχουμε διαγράψει ένα στοιχείο.

Η μέθοδος has() χρησιμοποιείται για να ελέγξει αν ένα συγκεκριμένο κλειδί (key) υπάρχει στο αντικείμενο Map. Επιστρέφει true αν το κλειδί υπάρχει, διαφορετικά επιστρέφει false.

Η σύνταξη είναι η εξής:

myMap.has(key);

όπου myMap είναι το αντικείμενο Map που ελέγχουμε και key είναι το κλειδί που επιθυμούμε να ελέγξουμε αν υπάρχει.

Παράδειγμα:

const myMap = new Map();
myMap.set("name", "John");
myMap.set("age", 30);

console.log(myMap.has("name")); // Output: true
console.log(myMap.has("occupation")); // Output: false

Στο παράδειγμα παραπάνω, χρησιμοποιούμε τη μέθοδο has() για να ελέγξουμε αν το κλειδί “name” υπάρχει στο Map myMap. Η μέθοδος επιστρέφει true καθώς το κλειδί “name” υπάρχει στο Map. Στη συνέχεια, ελέγχουμε αν το κλειδί “occupation” υπάρχει στο Map και η μέθοδος επιστρέφει false, καθώς το κλειδί “occupation” δεν υπάρχει.

Τα αντικείμενα (objects) και τα Map είναι δύο διαφορετικοί τύποι δομών δεδομένων στην JavaScript, έχουν ορισμένες διαφορές και κατάλληλα χρησιμοποιούνται για διαφορετικές περιπτώσεις. Εδώ είναι μερικές από τις διαφορές μεταξύ τους:

Κλειδιά (Keys):

  • Στα αντικείμενα, τα κλειδιά πρέπει να είναι strings ή symbols.
  • Στα Map, τα κλειδιά μπορούν να είναι οποιονδήποτε τύπος δεδομένων, συμπεριλαμβανομένων strings, numbers, objects κ.λπ.

Σειρά (Order):

  • Τα αντικείμενα δεν διατηρούν τη σειρά με την οποία προστέθηκαν τα ζευγάρια κλειδιού-τιμής. Δεν μπορείτε να εγγυηθείτε τη σειρά με την οποία θα προσπελάσετε τα δεδομένα.
  • Τα Map διατηρούν τη σειρά με την οποία προστέθηκαν τα ζευγάρια κλειδιού-τιμής. Αυτό σημαίνει ότι οι τιμές μπορούν να προσπελαστούν με την ίδια σειρά που προστέθηκαν.

Μέγεθος (Size):

  • Τα αντικείμενα δεν διαθέτουν ενσωματωμένη ιδιότητα για να εντοπίζουν τον αριθμό των ζευγαριών κλειδιού-τιμής που περιέχουν.
  • Τα Map έχουν την ιδιότητα size, που μας επιτρέπει να βρούμε τον αριθμό των ζευγαριών κλειδιού-τιμής που περιέχουν.

Μέθοδοι:

  • Τα αντικείμενα διαθέτουν προεγκατεστημένες μεθόδους, όπως το Object.keys(), Object.values() και Object.entries(), που μπορούν να χρησιμοποιηθούν για να προσπελάσουν τα δεδομένα.
  • Τα Map διαθέτουν δικές τους μεθόδους, όπως το Map.prototype.forEach(), που μπορούν να χρησιμοποιηθούν για την επεξεργασία των δεδομένων τους.

Συνοψίζοντας, τα αντικείμενα είναι κατάλληλα για απλές δομές κλειδιού-τιμής, ενώ τα Map είναι κατάλληλα για περιπλοκότερες δομές δεδομένων όπου είναι απαραίτητη η διατήρηση της σειράς ή όταν χρειάζεται να χρησιμοποιήσετε μη-συμβολοσειρά κλειδιά.

Η μέθοδος forEach() χρησιμοποιείται για να επαναλάβει (εκτελέσει) μια συνάρτηση (callback function) για κάθε στοιχείο ενός πίνακα (array) ή ενός Map. Η συνάρτηση αυτή παίρνει τρία ορίσματα: την τιμή του τρέχοντος στοιχείου, το δείκτη του τρέχοντος στοιχείου και τον πίνακα ή Map που τρέχουμε.

[adinserter block=”5″]

Η σύνταξη της forEach() είναι:

Για πίνακες (arrays):

array.forEach(function(currentValue, index, array) {
  // Κώδικας που εκτελείται για κάθε στοιχείο του πίνακα
});

Για Maps:

map.forEach(function(value, key, map) {
  // Κώδικας που εκτελείται για κάθε στοιχείο του Map
});

Η forEach() μέθοδος εκτελείται για κάθε στοιχείο του πίνακα ή Map, και η callback function εκτελείται για κάθε στοιχείο με τη σειρά που βρίσκονται μέσα στον πίνακα ή το Map. Δεν επιστρέφει κάτι, αλλά χρησιμοποιείται για να εκτελέσει μια λειτουργία για κάθε στοιχείο.

Ας δούμε ένα παράδειγμα:

const numbers = [1, 2, 3, 4, 5];

numbers.forEach(function(number, index) {
  console.log(`Το στοιχείο με δείκτη ${index} έχει την τιμή ${number}`);
});

Το παραπάνω παράδειγμα θα εμφανίσει:

Το στοιχείο με δείκτη 0 έχει την τιμή 1
Το στοιχείο με δείκτη 1 έχει την τιμή 2
Το στοιχείο με δείκτη 2 έχει την τιμή 3
Το στοιχείο με δείκτη 3 έχει την τιμή 4
Το στοιχείο με δείκτη 4 έχει την τιμή 5

Σε αυτό το παράδειγμα, η forEach() μέθοδος εκτελεί τη callback function για κάθε στοιχείο του πίνακα numbers. Η callback function λαμβάνει το στοιχείο και τον δείκτη του στοιχείου, και εμφανίζει τις τιμές αυτών των στοιχείων στην κονσόλα.

Η μέθοδος entries() χρησιμοποιείται για να επιστρέψει ένα νέο αντικείμενο iterator που περιέχει ζεύγη κλειδιού-τιμής για κάθε στοιχείο ενός αντικειμένου Map. Τα ζεύγη κλειδιού-τιμής παρουσιάζονται ως πίνακες με δύο στοιχεία, το πρώτο στοιχείο είναι το κλειδί και το δεύτερο είναι η τιμή.

Η σύνταξη της entries() είναι:

map.entries()

Η μέθοδος entries() δεν αλλάζει τον αρχικό Map, αλλά επιστρέφει ένα νέο iterator, που μπορείτε να το περάσετε σε μια for...of βρόγχο ή να το μετατρέψετε σε έναν πίνακα με την βοήθεια της Array.from() ή της spread σύνταξης.

Ας δούμε ένα παράδειγμα:

const myMap = new Map([
  ['name', 'John'],
  ['age', 30],
  ['city', 'New York']
]);

const iterator = myMap.entries();

for (const entry of iterator) {
  console.log(entry);
}

Το παραπάνω παράδειγμα θα εμφανίσει:

[ 'name', 'John' ]
[ 'age', 30 ]
[ 'city', 'New York' ]

Στο παράδειγμα αυτό, η entries() μέθοδος επιστρέφει έναν iterator που περιέχει τα ζεύγη κλειδιού-τιμής του Map myMap. Ο for...of βρόγχος επαναλαμβάνει μέσα από τον iterator και εμφανίζει τα ζεύγη κλειδιού-τιμής.

21 Αυγούστου, 2023
top
error: Content is protected !!
Μετάβαση σε γραμμή εργαλείων