Розуміння множин у JavaScript

В ES6 JavaScript з’явилися нові структури даних – множини (Sets). Розглянемо їх детальніше.

Які особливості множин?

Як їх застосовувати в JavaScript?

Які методи вони пропонують для розв’язання різних задач?

Знайдемо відповіді на ці питання в даній статті.

Множини

З назви зрозуміло, що множина – це колекція унікальних елементів. Вона не зберігає дублікати.

В JavaScript множини зберігають елементи у порядку їх додавання. Це означає, що вони впорядковані. Множини можуть зберігати як примітивні типи даних, так і об’єкти.

Розглянемо синтаксис створення множин в JavaScript.

Для практики вам знадобиться IDE.

const names = new Set(["John", "Harry", "Wick", "Jack", "Harry"]);
console.log(names);

const randomWord = new Set("Hiiiiiii");
console.log(randomWord);

const numbers = new Set([5, 5, 5, 2, 1, 1, 2, 3]);
console.log(numbers);

Властивості та методи

Множини мають різні властивості та методи для ефективної роботи з ними. Назви методів досить інтуїтивні, що спрощує їх використання. Розглянемо їх детальніше.

Розмір

Властивість `size` повертає кількість елементів у множині.

const names = new Set(["John", "Harry", "Wick", "Jack", "Harry"]);
console.log(`Розмір: ${names.size}`);

Додати

Метод `add` додає новий елемент до множини. Якщо елемент вже існує, він не буде доданий повторно.

// порожня множина
const names = new Set();

names.add("John");
names.add("Harry");
names.add("Wick");
names.add("Jack");
names.add("Harry");

console.log(names);

Має

Метод `has` приймає один аргумент і повертає `true`, якщо елемент присутній в множині, інакше повертає `false`.

const names = new Set(["John", "Harry", "Wick", "Jack", "Harry"]);

console.log(names.has("Harry"));
console.log(names.has("Alley"));

Видалити

Метод `delete` приймає аргумент і видаляє відповідний елемент з множини. Якщо елемент не існує, помилка не виникає.

const names = new Set(["John", "Harry", "Wick", "Jack", "Harry"]);

names.delete("John");

console.log(names);

Записи

Метод `entries` повертає ітератор, що містить масиви пар ключ-значення, де ключ і значення ідентичні, у порядку додавання.

const names = new Set(["John", "Harry", "Wick", "Jack", "Harry"]);

const entries = names.entries();

console.log(entries.next().value);
console.log(entries.next().value);
console.log(entries.next().value);
console.log(entries.next().value);
console.log(entries.next().value);

Ключі

Метод `keys` повертає ітератор елементів множини у порядку їх додавання.

const names = new Set(["John", "Harry", "Wick", "Jack", "Harry"]);

const keys = names.keys();

console.log(keys.next().value);
console.log(keys.next().value);
console.log(keys.next().value);
console.log(keys.next().value);
console.log(keys.next().value);

Значення

Метод `values` повертає ітератор елементів множини у порядку додавання, подібно до методу `keys`.

const names = new Set(["John", "Harry", "Wick", "Jack", "Harry"]);

const values = names.values();

console.log(values.next().value);
console.log(values.next().value);
console.log(values.next().value);
console.log(values.next().value);
console.log(values.next().value);

Очистити

Метод `clear` видаляє всі елементи з множини.

const names = new Set(["John", "Harry", "Wick", "Jack", "Harry"]);

names.clear();

console.log(names);

Для кожного

Метод `forEach` дозволяє ітеруватись по множині та обробляти кожен елемент.

const names = new Set(["John", "Harry", "Wick", "Jack", "Harry"]);

names.forEach((element) => {
    console.log(element);
});

Практичний приклад

Розглянемо приклад використання множин для видалення дублікатів з масиву.

Ось як це можна реалізувати:

  • Створюємо масив з дублікатами.
  • Ініціалізуємо порожню множину.
  • Проходимось по масиву:
    • Додаємо кожен елемент до множини.
    • Дублікати автоматично не додаються.
  • Створюємо порожній масив.
  • Проходимось по множині та додаємо елементи до нового масиву.
  • Виводимо новий масив без дублікатів.

Спробуйте реалізувати це самостійно. Якщо виникнуть труднощі, погляньте на рішення нижче.

const arr = ["John", "Harry", "Wick", "Jack", "Harry"];

const temp = new Set();

arr.forEach((element) => {
    temp.add(element);
});

const newArr = [];

temp.forEach((element) => {
    newArr.push(element);
});

console.log(newArr);

Висновок

Тепер ви знаєте все необхідне для роботи з множинами в JavaScript. Використовуйте їх у своїх проектах. Насолоджуйтесь процесом кодування 👨‍💻