Sobes.tech
Junior

Ποιες δομές δεδομένων υπάρχουν στη JavaScript;

sobes.tech AI

Απάντηση από AI

Οι πιο απλοί τύποι δεδομένων: String (αλυσίδες), Number (αριθμοί), BigInt (μεγάλοι ακέραιοι αριθμοί), Boolean (λογικός τύπος), Undefined (μη ορισμένη τιμή), Symbol (σύμβολα), Null (κενή τιμή).

Σύνθεμες δομές δεδομένων:

  • Object (αντικείμενο): Συλλογή ζευγών κλειδιού-τιμής.
    // Απλό αντικείμενο
    const user = {
      name: 'Ivan',
      age: 30
    };
    
  • Array (πίνακας): Ταξινομημένη συλλογή στοιχείων.
    // Πίνακας αριθμών
    const numbers = [1, 2, 3, 4, 5];
    
  • Map (χάρτης): Συλλογή ζευγών κλειδιού-τιμής, όπου τα κλειδιά μπορούν να είναι οποιουδήποτε τύπου δεδομένων και διατηρούν τη σειρά εισαγωγής.
    // Χάρτης με διαφορετικούς τύπους κλειδιών
    const map = new Map();
    map.set('name', 'Peter');
    map.set(1, 'αριθμός');
    
  • Set (σύνολο): Συλλογή μοναδικών τιμών οποιουδήποτε τύπου δεδομένων.
    // Σύνολο μοναδικών αριθμών
    const set = new Set([1, 2, 2, 3, 4, 4]); // Θα περιέχει [1, 2, 3, 4]
    
  • Typed Arrays (τύπου πίνακες): Πίνακες σταθερού μήκους, των οποίων τα στοιχεία έχουν ορισμένο αριθμητικό τύπο (π.χ., Int8Array, Uint8Array, Float32Array).
    // Τυποποιημένος πίνακας byte
    const byteArray = new Uint8Array([10, 20, 30]);
    
  • WeakMap (αδύναμος χάρτης): Παρόμοιος με το Map, αλλά τα κλειδιά πρέπει να είναι αντικείμενα, και δεν εμποδίζουν τον garbage collector να διαγράψει τα συσχετισμένα αντικείμενα.
    // Αδύναμος χάρτης
    const weakMap = new WeakMap();
    const obj1 = {};
    weakMap.set(obj1, 'δεδομένα 1');
    
  • WeakSet (αδύναμο σύνολο): Παρόμοιο με το Set, αλλά τα στοιχεία πρέπει να είναι αντικείμενα, και δεν εμποδίζουν τον garbage collector να διαγράψει αυτά.
    // Αδύναμο σύνολο
    const weakSet = new WeakSet();
    const obj2 = {};
    weakSet.add(obj2);
    

Επίσης, υπάρχουν δομές που χρησιμοποιούνται σε API χαμηλού επιπέδου ή που αντιπροσωπεύουν ειδικά αντικείμενα:

  • ArrayBuffer: Αντιπροσωπεύει ένα γενικό, σταθερού μήκους δυαδικό buffer.
  • DataView: Παρέχει μια χαμηλού επιπέδου διεπαφή για την ανάγνωση και εγγραφή αριθμητικών δεδομένων σε ένα ArrayBuffer, επιτρέποντας τον έλεγχο των μετατοπίσεων και της σειράς των bytes.