JavaRush /Курсы /Модуль 1: Web Core /New data structures: Map, Set

New data structures: Map, Set

Модуль 1: Web Core
23 уровень , 2 лекция
Открыта

3.1 Коллекция Map

В ECMAScript 2015 (ES6) в JavaScript добавили две новые структуры данных: Map и Set. Эти структуры данных предоставляют более гибкие и эффективные способы хранения и управления коллекциями данных по сравнению с традиционными объектами и массивами.

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

1. Создание и инициализация Map:

JavaScript
    
      const map = new Map();
    
  

2. Добавление элементов:

Метод set используется для добавления новых пар ключ-значение в Map.

JavaScript
    
      map.set('key1', 'value1');
      map.set(2, 'value2');
      map.set({ name: 'objectKey' }, 'value3');
    
  

3. Получение элементов:

Метод get используется для получения значения по ключу.

JavaScript
    
      const map = new Map();

      map.set('key1', 'value1');
      map.set(2, 'value2');
      map.set({ name: 'objectKey' }, 'value3');

      console.log(map.get('key1')); // 'value1'
      console.log(map.get(2)); // 'value2'
    
  

4. Проверка наличия ключа:

Метод has проверяет, существует ли ключ в Map.

JavaScript
    
      const map = new Map();

      map.set('key1', 'value1');
      map.set(2, 'value2');
      map.set({ name: 'objectKey' }, 'value3');

      console.log(map.has('key1')); // true
      console.log(map.has('key3')); // false
    
  

5. Удаление элементов:

Метод delete удаляет элемент по ключу.

JavaScript
    
      const map = new Map();

      map.set('key1', 'value1');
      map.set(2, 'value2');
      map.set({ name: 'objectKey' }, 'value3');

      map.delete('key1');
      console.log(map.has('key1')); // false
    
  

6. Очистка Map:

Метод clear удаляет все элементы из Map.

JavaScript
    
      const map = new Map();

      map.set('key1', 'value1');
      map.set(2, 'value2');
      map.set({ name: 'objectKey' }, 'value3');

      map.clear();
      console.log(map.size); // 0
    
  

7. Итерация по Map:

Вы можете использовать цикл for...of для итерации по Map.

Пример:

JavaScript
    
      const map = new Map();
      map.set('key1', 'value1');
      map.set(2, 'value2');

      for (const [key, value] of map) {
        console.log(`${key}: ${value}`);
      }

      // 'key1: value1'
      // '2: value2'
    
  

3.2 Коллекция Set

Set — это структура данных, которая позволяет хранить уникальные значения любого типа, включая объекты и примитивы.

1. Создание и инициализация Set:

JavaScript
    
      const set = new Set();
    
  

2. Добавление элементов:

Метод add используется для добавления новых значений в Set.

JavaScript
    
      set.add(1);
      set.add('value2');
      set.add({ name: 'objectValue' });
    
  

3. Проверка наличия значения:

Метод has проверяет, существует ли значение в Set.

JavaScript
    
      const set = new Set();

      set.add(1);
      set.add('value2');
      set.add({ name: 'objectValue' });

      console.log(set.has(1)); // true
      console.log(set.has('value3')); // false
    
  

4. Удаление элементов:

Метод delete удаляет значение из Set.

JavaScript
    
      const set = new Set();

      set.add(1);
      set.add('value2');
      set.add({ name: 'objectValue' });

      set.delete(1);
      console.log(set.has(1)); // false
    
  

5. Очистка Set:

Метод clear удаляет все элементы из Set.

JavaScript
    
      const set = new Set();

      set.add(1);
      set.add('value2');
      set.add({ name: 'objectValue' });

      set.clear();
      console.log(set.size); // 0
    
  

6. Итерация по Set:

Вы можете использовать цикл for...of для итерации по Set.

JavaScript
    
      const set = new Set();
      set.add(1);
      set.add('value2');

      for (const value of set) {
        console.log(value);
      }

      // 1
      // 'value2'
    
  

3.3 Сравнение Map и Set

Преимущества Map:

  1. Произвольные ключи: в Map ключи могут быть любого типа, включая объекты и функции, в отличие от объектов, где ключами могут быть только строки или символы.
  2. Упорядоченные элементы: элементы в Map сохраняют порядок добавления, что упрощает итерацию по ним в порядке добавления.
  3. Размер коллекции: метод size позволяет быстро получить количество элементов в Map.

Преимущества Set:

  1. Уникальные значения: Set автоматически гарантирует, что все его элементы уникальны.
  2. Упорядоченные элементы: элементы в Set сохраняют порядок добавления, что упрощает итерацию по ним в порядке добавления.
  3. Оптимизированные операции: Set предоставляет оптимизированные методы для добавления, удаления и проверки наличия элементов.

Практические примеры

Пример использования Map для хранения информации о пользователях:

JavaScript
    
      const users = new Map();
      users.set(1, { name: 'Alice', age: 25 });
      users.set(2, { name: 'Bob', age: 30 });

      for (const [id, user] of users) {
        console.log(`User ID: ${id}, Name: ${user.name}, Age: ${user.age}`);
      }

      // User ID: 1, Name: Alice, Age: 25
      // User ID: 2, Name: Bob, Age: 30
    
  

Пример использования Set для фильтрации уникальных значений:

JavaScript
    
      const numbers = [1, 2, 3, 1, 2, 4, 5, 3];
      const uniqueNumbers = new Set(numbers);

      for (const number of uniqueNumbers) {
        console.log(number);
      }

      // 1
      // 2
      // 3
      // 4
      // 5
    
  
1
Задача
Модуль 1: Web Core, 23 уровень, 2 лекция
Недоступна
Уникальные email
Уникальные email
1
Задача
Модуль 1: Web Core, 23 уровень, 2 лекция
Недоступна
Пользователи и роли
Пользователи и роли
Комментарии (4)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Anonymous #3580797 Уровень 69
24 ноября 2025
Для тех, кто не понял: Map - тот же обьект, но имеет свои методы и помимо строк и символов ключом может быть что угодно(строки, числа, объекты, функции и тд). Set - тот же массив, но со своими методами, и значения не повторяются (как множество в питоне).
Ivan Уровень 59
25 мая 2025
На этом этапе непонятно, чем map лучше обычных объектов JS.
RayCowperwood Уровень 48
17 июня 2025
Екатерина Уровень 93
31 декабря 2024
Вместо 'q' и 'w' используйте более реалистичные имена пользователей и роли, например 'admin', 'editor'. 😐