Sobes.tech
Junior

Que estruturas de dados existem em JavaScript?

sobes.tech IA

Resposta da IA

Tipos de dados mais simples: String (strings), Number (números), BigInt (grandes números inteiros), Boolean (tipo lógico), Undefined (valor indefinido), Symbol (símbolos), Null (valor nulo).

Estruturas de dados complexas:

  • Object (objeto): Coleção de pares chave-valor.
    // Objeto simples
    const user = {
      name: 'Ivan',
      age: 30
    };
    
  • Array (matriz): Coleção ordenada de elementos.
    // Matriz de números
    const numbers = [1, 2, 3, 4, 5];
    
  • Map (mapa): Coleção de pares chave-valor, onde as chaves podem ser de qualquer tipo de dado e mantêm a ordem de inserção.
    // Mapa com diferentes tipos de chaves
    const map = new Map();
    map.set('name', 'Peter');
    map.set(1, 'número');
    
  • Set (conjunto): Coleção de valores únicos de qualquer tipo de dado.
    // Conjunto de números únicos
    const set = new Set([1, 2, 2, 3, 4, 4]); // Contém [1, 2, 3, 4]
    
  • Typed Arrays (arrays tipados): Arrays de comprimento fixo, cujos elementos têm um tipo numérico definido (por exemplo, Int8Array, Uint8Array, Float32Array).
    // Array tipado de bytes
    const byteArray = new Uint8Array([10, 20, 30]);
    
  • WeakMap (mapa fraco): Semelhante a Map, mas suas chaves devem ser objetos, e eles não impedem que o coletor de lixo remova os objetos associados.
    // Mapa fraco
    const weakMap = new WeakMap();
    const obj1 = {};
    weakMap.set(obj1, 'dados 1');
    
  • WeakSet (conjunto fraco): Semelhante a Set, mas seus elementos devem ser objetos, e eles não impedem que o coletor de lixo remova esses objetos.
    // Conjunto fraco
    const weakSet = new WeakSet();
    const obj2 = {};
    weakSet.add(obj2);
    

Existem também estruturas usadas em APIs de baixo nível ou que representam objetos especiais:

  • ArrayBuffer: Representa um buffer binário de comprimento fixo.
  • DataView: Fornece uma interface de baixo nível para ler e escrever dados numéricos em um ArrayBuffer, permitindo controlar deslocamentos e a ordem dos bytes.