Найти в Дзене
Nuances of programming

Множества ES6 в JavaScript. Зачем?

Оглавление

Источник: Nuances of Programming

Что такое множество?

Это набор уникальных значений  —  ни одно из них не возникает дважды или более раз. Это единственное ограничение, которое делает множество значений множеством.¹

Какие операции мы на нем выполняем? Наиболее распространенные операции с элементом:

  • Добавление.
  • Удаление.
  • Проверка существования во множестве.

Массивы, объекты и множества ES6

В JavaScript до ES6 в качестве множеств использовали массивы и простые объекты. Сравним основные операции на них и множествах ES6:

Массивы:

Объекты:

Множества ES6:

Множества лаконичнее, но оправдывает ли это более сложную структуру данных?

Вот аргумент: для массивов надо вручную применять свойство уникальности, для объектов  —  структуру {‘element’: true,…}. Такой подход порождает ошибки, потому что необходимо обеспечить сохранение этого свойства в каждой части кода, которая взаимодействует со множеством.

Еще одним недостатком простых объектов является хранение только лишь строк. Однако это можно преодолеть, усложнив структуру данных. Но есть другие причины использовать множества ES6…

Сложные операции

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

  • Пересечение множеств A и B.
  • Объединение множеств А и B.
  • Является ли A подмножеством B.

С массивами и объектами они могут быть довольно сложными и медленными.

Массивы:

Объекты:

Связь с массивами

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

Используя это, можно объединить простоту массивов со скоростью множеств ES6:

Заключение

Множества ES6 сочетают в себе простоту массивов и скорость объектов и являются хорошим выбором для представления множествв JavaScript. Лёгкое преобразование в массивы и наоборот позволяет сочетать лучшее. Также они автоматически применяют свойство уникальности, что делает код надёжнее.

Множества не следует применять везде, но если нужно, чтобы массивы вели себя как множества, то преобразование можно легко совершить. Подробнее в документации.

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

Читайте также:

Читайте нас в Telegram, VK

Перевод статьи Johannes Baum: Why You Should Use ES6 Sets in JavaScript