Frontend Разработка | JavaScript & Верстка сайтов. HTML, CSS и React. Уроки для Фронтенд Developer. JS, Vue и Web технологии. IT Карьера, Курсы и Coding.
@frontend_1
🧬 Нативные операции с множествами (Set Methods)
Классическая задача на собеседовании: «Найди общие элементы в двух массивах».
Обычно мы писали arr1.filter(x => arr2.includes(x)). Это O(N*M) по сложности (медленно) и выглядит многословно.
Начиная с ES2024 у объекта Set появились полноценные математические методы. Больше никаких lodash.intersection или самописных хелперов.
🔥 Как это работает теперь:
Допустим, у нас есть права доступа пользователей:
const editors = new Set(['read', 'write', 'comment']);
const admins = new Set(['read', 'write', 'delete', 'ban']);1. Пересечение (Intersection)
Найти, что общего (какие права есть у обоих).
const common = editors.intersection(admins);
// Set(2) { 'read', 'write' }
2. Разность (Difference)
Найти уникальные права (что есть у админа, чего нет у редактора).
const uniqueAdmin = admins.difference(editors);
// Set(2) { 'delete', 'ban' }
3. Объединение (Union)
Слить всё в одну кучу без дублей.
const allRights = editors.union(admins);
// Set(5) { 'read', 'write', 'comment', 'delete', 'ban' }4. Симметричная разность (Symmetric Difference)
Найти всё, что НЕ пересекается (уникальное для каждой из групп).
const uniqueToEach = editors.symmetricDifference(admins);
// Set(3) { 'comment', 'delete', 'ban' }
Почему это круто:
1. Читаемость: Код говорит сам за себя.
2. Скорость: Нативная реализация на C++ в движке браузера всегда быстрее JS-циклов.
3. Гибкость: Методы принимают не только Set, но и любые итерируемые объекты (массивы, генераторы), автоматически преобразуя их
при необходимости (в зависимости от реализации, но лучше передавать Set для гарантии).
👉 @frontend_1