Sobes.tech
Junior

Jakie struktury danych istnieją w JavaScript?

sobes.tech AI

Odpowiedź od AI

Najprostsze typy danych: String (łańcuchy), Number (liczby), BigInt (duże liczby całkowite), Boolean (typ logiczny), Undefined (wartość niezdefiniowana), Symbol (symbole), Null (wartość null).

Złożone struktury danych:

  • Object (obiekt): Kolekcja par klucz-wartość.
    // Prosty obiekt
    const user = {
      name: 'Ivan',
      age: 30
    };
    
  • Array (tablica): Uporządkowana kolekcja elementów.
    // Tablica liczb
    const numbers = [1, 2, 3, 4, 5];
    
  • Map (mapa): Kolekcja par klucz-wartość, gdzie klucze mogą być dowolnego typu danych i zachowują kolejność wstawiania.
    // Mapa z różnymi typami kluczy
    const map = new Map();
    map.set('name', 'Peter');
    map.set(1, 'liczba');
    
  • Set (zbiór): Kolekcja unikalnych wartości dowolnego typu danych.
    // Zbiór unikalnych liczb
    const set = new Set([1, 2, 2, 3, 4, 4]); // Będzie zawierać [1, 2, 3, 4]
    
  • Typed Arrays (tablice typowane): Tablice o stałej długości, elementy których mają określony typ numeryczny (np. Int8Array, Uint8Array, Float32Array).
    // Tablica bajtów typu `Uint8Array`
    const byteArray = new Uint8Array([10, 20, 30]);
    
  • WeakMap (słaba mapa): Podobna do Map, ale klucze muszą być obiektami, i nie zapobiegają one usuwaniu obiektów przez garbage collector.
    // Słaba mapa
    const weakMap = new WeakMap();
    const obj1 = {};
    weakMap.set(obj1, 'dane 1');
    
  • WeakSet (słaby zbiór): Podobny do Set, ale elementy muszą być obiektami, i nie zapobiegają one usuwaniu obiektów przez garbage collector.
    // Słaby zbiór
    const weakSet = new WeakSet();
    const obj2 = {};
    weakSet.add(obj2);
    

Istnieją również struktury używane w API niskiego poziomu lub reprezentujące specjalne obiekty:

  • ArrayBuffer: Reprezentuje uniwersalny, o stałej długości, bufor binarny.
  • DataView: Zapewnia niskopoziomowy interfejs do odczytu i zapisu danych liczbowych w ArrayBuffer, umożliwiając kontrolę przesunięć i kolejności bajtów.