Какие структуры данных есть в js

Существует несколько встроенных структур данных, которые помогают организовать и хранить данные эффективным образом. Основные структуры данных включают:

1. Массивы (Arrays)

Это упорядоченные коллекции элементов, которые могут содержать данные любого типа. Они являются гибкими и могут изменять размер динамически.

let fruits = ["Apple", "Banana", "Cherry"];

2. Объекты (Objects)

Представляют собой неупорядоченные коллекции пар ключ-значение. Они используются для хранения разнородных данных и сложных структур.

let person = {
  name: "John",
  age: 30,
  isEmployed: true
};

3. Множества (Sets)

Это коллекция уникальных значений любого типа. Основное преимущество использования множеств заключается в том, что они автоматически удаляют дубликаты.

let mySet = new Set([1, 2, 3, 2, 1]);
console.log(mySet); // Выведет Set {1, 2, 3}

4. Словари / Карты (Maps)

Это коллекция пар ключ-значение, где ключи могут быть любого типа. В отличие от объектов, ключи в нем могут быть не только строками или символами.

let myMap = new Map([
  ["key1", "value1"],
  ["key2", "value2"]
]);

5. Слабые множества (WeakSets) и слабые карты (WeakMaps)

Это специальные версии `Set` и `Map` соответственно, которые позволяют сборщику мусора автоматически удалить элементы, если на них больше нет ссылок. Они полезны для оптимизации памяти, но имеют более ограниченный API.

let weakSet = new WeakSet();
let obj = {};
weakSet.add(obj);
let weakMap = new WeakMap();
let key = {};
weakMap.set(key, "value");

6. Символы (Symbols)

Это уникальный и неизменяемый тип данных, используемый в качестве идентификатора для свойств объектов.

let sym = Symbol("description");

7. Типизированные массивы (Typed Arrays)

Предоставляют способ работы с бинарными данными и позволяют интерпретировать байты в массиве как числа специфического типа. Они полезны для работы с данными, получаемыми из сети, файлов или для использования в графических операциях.

let typedArray = new Uint8Array(8);

Каждая из этих структур данных имеет свои особенности и предназначена для решения специфических задач, таких как оптимизация производительности, управление памятью, упорядочивание данных и т.д. Выбор подходящей структуры данных зависит от конкретных требований и условий задачи.

Feb. 27, 2024, easyoffer

Существует несколько основных структур данных, которые используются для хранения и управления данными. Рассмотрим их подробнее:

1. Массивы (Arrays)

  • Что это: Упорядоченные списки элементов.
  • Зачем нужны: Для хранения коллекций данных, которые можно обрабатывать по индексу.
  • Как использовать:
     ```javascript
     let fruits = ["Apple", "Banana", "Cherry"];
     console.log(fruits[0]); // Apple
     ```
  • Пример использования: Хранение списка товаров в корзине интернет-магазина.

2. Объекты (Objects)

  • Что это: Наборы пар "ключ-значение".
  • Зачем нужны: Для хранения данных в виде ассоциативных массивов, где ключами могут быть строки или символы.
  • Как использовать:
     ```javascript
     let person = {
       name: "John",
       age: 30
     };
     console.log(person.name); // John
     ```
  • Пример использования: Хранение информации о пользователе.

3. Map (Карты)

  • Что это: Коллекции пар "ключ-значение", где ключи могут быть любого типа.
  • Зачем нужны: Для хранения данных с уникальными ключами, с более гибкими возможностями по сравнению с объектами.
  • Как использовать:
     ```javascript
     let map = new Map();
     map.set('name', 'John');
     map.set(1, 'one');
     console.log(map.get('name')); // John
     ```
  • Пример использования: Хранение настроек с ключами различного типа.

4. Set (Множества)

  • Что это: Коллекции уникальных значений.
  • Зачем нужны: Для хранения множества значений, где каждое значение уникально.
  • Как использовать:
     ```javascript
     let set = new Set();
     set.add(1);
     set.add(1); // Значение не добавится, так как оно уже существует
     console.log(set.size); // 1
     ```
  • Пример использования: Хранение уникальных тегов из списка статей.

5. WeakMap (Слабые карты)

  • Что это: Коллекции пар "ключ-значение", где ключи являются объектами и имеют слабые ссылки.
  • Зачем нужны: Для хранения данных с автоматическим удалением неиспользуемых объектов.
  • Как использовать:
     ```javascript
     let weakMap = new WeakMap();
     let obj = {};
     weakMap.set(obj, 'value');
     obj = null; // Теперь объект может быть удалён из памяти
     ```
  • Пример использования: Хранение метаданных объектов без риска утечек памяти.

6. WeakSet (Слабые множества)

  • Что это: Коллекции объектов, где каждое значение может быть удалено автоматически, если больше не используется.
  • Зачем нужны: Для хранения уникальных объектов с возможностью автоматического удаления.
  • Как использовать:
     ```javascript
     let weakSet = new WeakSet();
     let obj = {};
     weakSet.add(obj);
     obj = null; // Теперь объект может быть удалён из памяти
     ```
  • Пример использования: Отслеживание объектов без риска утечек памяти.

7. String (Строки)

  • Что это: Последовательности символов.
  • Зачем нужны: Для хранения и обработки текстовых данных.
  • Как использовать:
     ```javascript
     let greeting = "Hello, world!";
     console.log(greeting.length); // 13
     ```
  • Пример использования: Хранение и манипулирование текстовой информацией, такой как имена пользователей или сообщения.

8. Typed Arrays (Типизированные массивы)

  • Что это: Массивы, которые предоставляют массивы с фиксированной длиной для различных типов данных.
  • Зачем нужны: Для работы с бинарными данными и оптимизации производительности.
  • Как использовать:
     ```javascript
     let buffer = new ArrayBuffer(16);
     let int32View = new Int32Array(buffer);
     int32View[0] = 42;
     console.log(int32View[0]); // 42
     ```
  • Пример использования: Обработка данных в WebGL или манипулирование бинарными данными.

Есть массивы, объекты, Map, Set, WeakMap, WeakSet, строки и типизированные массивы. Они нужны для хранения и управления различными типами данных, от упорядоченных списков до ассоциативных массивов и уникальных наборов значений.

May 27, 2024, easyoffer