Sobes.tech
Junior

Quali strutture dati esistono in JavaScript?

sobes.tech AI

Risposta dell'AI

Tipi di dati più semplici: String (stringhe), Number (numeri), BigInt (grandi numeri interi), Boolean (tipo logico), Undefined (valore indefinito), Symbol (simboli), Null (valore nullo).

Strutture di dati complesse:

  • Object (oggetto): Collezione di coppie chiave-valore.
    // Oggetto semplice
    const user = {
      name: 'Ivan',
      age: 30
    };
    
  • Array (array): Collezione ordinata di elementi.
    // Array di numeri
    const numbers = [1, 2, 3, 4, 5];
    
  • Map (mappa): Collezione di coppie chiave-valore, dove le chiavi possono essere di qualsiasi tipo e mantengono l'ordine di inserimento.
    // Mappa con diversi tipi di chiavi
    const map = new Map();
    map.set('name', 'Peter');
    map.set(1, 'numero');
    
  • Set (insieme): Collezione di valori unici di qualsiasi tipo.
    // Insieme di numeri unici
    const set = new Set([1, 2, 2, 3, 4, 4]); // Contiene [1, 2, 3, 4]
    
  • Typed Arrays (array tipizzati): Array di lunghezza fissa, i cui elementi hanno un tipo numerico definito (ad esempio, Int8Array, Uint8Array, Float32Array).
    // Array di byte tipizzato
    const byteArray = new Uint8Array([10, 20, 30]);
    
  • WeakMap (mappa debole): Simile a Map, ma le sue chiavi devono essere oggetti, e non impediscono al garbage collector di rimuovere gli oggetti associati.
    // Mappa debole
    const weakMap = new WeakMap();
    const obj1 = {};
    weakMap.set(obj1, 'dati 1');
    
  • WeakSet (insieme debole): Simile a Set, ma gli elementi devono essere oggetti, e non impediscono al garbage collector di rimuoverli.
    // Insieme debole
    const weakSet = new WeakSet();
    const obj2 = {};
    weakSet.add(obj2);
    

Esistono anche strutture utilizzate nelle API a basso livello o che rappresentano oggetti speciali:

  • ArrayBuffer: Rappresenta un buffer binario di lunghezza fissa.
  • DataView: Fornisce un'interfaccia a basso livello per leggere e scrivere dati numerici in un ArrayBuffer, consentendo di controllare gli offset e l'ordine dei byte.