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 лекция
Недоступна
Пользователи и роли
Пользователи и роли
Комментарии (3)
ЧТОБЫ ПОСМОТРЕТЬ ВСЕ КОММЕНТАРИИ ИЛИ ОСТАВИТЬ КОММЕНТАРИЙ,
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ
Ivan Уровень 59
25 мая 2025
На этом этапе непонятно, чем map лучше обычных объектов JS.
RayCowperwood Уровень 48
17 июня 2025
Екатерина Уровень 76
31 декабря 2024
Вместо 'q' и 'w' используйте более реалистичные имена пользователей и роли, например 'admin', 'editor'. 😐