Тип данных Set представляет собой набор уникальных значений. Он позволяет хранить значения любого типа данных, такие как числа, строки, логические значения, объекты или даже другие наборы, но каждое значение может появляться в наборе только один раз. Порядок элементов в наборе сохраняется по мере их вставки, и вы можете перебирать элементы в том же порядке.

Создание набора Чтобы создать набор в JavaScript, вы можете использовать конструктор Set() или новый синтаксис Set():

const mySet = new Set();
const mySet2 = new Set([1, 'hello', { key: 'value' }]);

В первом примере создается пустой Set. Во втором примере Set создается из трех элементов: числа, строки и объекта.

Добавление и удаление элементов Чтобы добавить элемент в набор, вы можете использовать метод add():

mySet.add(1);
mySet.add('hello');
mySet.add({ key: 'value' });

Вы также можете добавить несколько элементов одновременно, используя оператор распространения:

mySet.add(...[1, 'hello', { key: 'value' }]);

Чтобы удалить элемент из набора, вы можете использовать метод delete():

mySet.delete('hello');

Проверка существования элемента Вы можете проверить, существует ли элемент в наборе, используя метод has():

mySet.has(1); // true
mySet.has('hello'); // false

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

mySet.size; // 2

Перебор набора Вы можете перебирать набор с помощью цикла for…of или метода forEach():

for (const element of mySet) {
  console.log(element);
}
mySet.forEach((element) => {
  console.log(element);
});

Операции над множествами В множествах есть несколько встроенных операций, позволяющих выполнять обычные операции над множествами, такие как объединение, пересечение и разность.

Союз

Объединение двух наборов содержит все уникальные элементы из обоих наборов:

const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);

const union = new Set([...setA, ...setB]);

Перекресток

Пересечение двух множеств содержит только те элементы, которые присутствуют в обоих множествах:

const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);

const intersection = new Set([...setA].filter(x => setB.has(x)));

Разница

Разница двух наборов содержит только те элементы, которые присутствуют в первом наборе, но отсутствуют во втором наборе:

const setA = new Set([1, 2, 3]);
const setB = new Set([2, 3, 4]);

const difference = new Set([...setA].filter(x => !setB.has(x)));

Заключение

В заключение, тип данных Set в JavaScript — это мощный инструмент для управления коллекциями уникальных значений. С помощью наборов вы можете добавлять и удалять элементы, проверять, существует ли элемент, перебирать элементы и выполнять операции над наборами, такие как объединение, пересечение и различие. Понимание наборов может помочь вам писать более эффективный и лаконичный код в приложениях JavaScript.