3.1 Коллекция Map
В ECMAScript 2015 (ES6) в JavaScript добавили две новые структуры данных: Map и Set. Эти структуры данных предоставляют более гибкие и эффективные способы хранения и управления коллекциями данных по сравнению с традиционными объектами и массивами.
Map — это структура данных, которая позволяет хранить пары ключ-значение, где ключи могут быть любого типа, включая объекты и функции.
1. Создание и инициализация Map:
const map = new Map();
2. Добавление элементов:
Метод set используется для добавления новых пар ключ-значение в Map.
map.set('key1', 'value1');
map.set(2, 'value2');
map.set({ name: 'objectKey' }, 'value3');
3. Получение элементов:
Метод get используется для получения значения по ключу.
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.
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 удаляет элемент по ключу.
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.
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.
Пример:
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:
const set = new Set();
2. Добавление элементов:
Метод add используется для добавления новых значений в Set.
set.add(1);
set.add('value2');
set.add({ name: 'objectValue' });
3. Проверка наличия значения:
Метод has проверяет, существует ли значение в Set.
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.
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.
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.
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:
- Произвольные ключи: в
Mapключи могут быть любого типа, включая объекты и функции, в отличие от объектов, где ключами могут быть только строки или символы. - Упорядоченные элементы: элементы в
Mapсохраняют порядок добавления, что упрощает итерацию по ним в порядке добавления. - Размер коллекции: метод
sizeпозволяет быстро получить количество элементов вMap.
Преимущества Set:
- Уникальные значения:
Setавтоматически гарантирует, что все его элементы уникальны. - Упорядоченные элементы: элементы в
Setсохраняют порядок добавления, что упрощает итерацию по ним в порядке добавления. - Оптимизированные операции:
Setпредоставляет оптимизированные методы для добавления, удаления и проверки наличия элементов.
Практические примеры
Пример использования Map для хранения информации о пользователях:
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 для фильтрации уникальных значений:
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
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ