Что такое объект Set и как мы можем его использовать?
Когда я впервые начал изучать JavaScript, я прошел множество различных руководств. Одна вещь, с которой я никогда не сталкивался ни в одном из руководств для начинающих, — это объект Set
.
Объект Set
не является фундаментальной концепцией, которую вы должны изучить немедленно. Тем не менее, это то, что полезно знать, когда оно вам понадобится.
Представьте себе такую ситуацию: у вас есть массив элементов, и вы хотите удалить дубликаты из массива. Вы можете начать думать, что можете либо отобразить, либо отфильтровать массив. Но быстрый поиск в Google покажет вам, что проще всего это сделать с помощью объекта Set
.
В этой статье мы рассмотрим объект Set
и посмотрим, как его использовать, на некоторых примерах в JavaScript. К концу статьи у вас должно быть понимание следующего:
- Что такое объект
Set
? - Свойства и методы объекта
Set
- Разница между массивом и
Set
Что такое объект Set?
«Объект
Set
позволяет хранить уникальные значения любого типа, будь то примитивные значения или ссылки на объекты».
Другими словами, объект Set
подобен массиву. Вы можете хранить предметы любого типа. Но вы не можете хранить повторяющиеся значения.
Например, здесь у меня есть массив чисел.
const numbers = [1, 2, 3, 2, 1];
Я могу создать новый Set
, передав массив в качестве параметра.
const uniqueNumbers = new Set(numbers);
Если я запишу обе эти переменные в консоль, мы увидим следующий вывод.
console.log(numbers); console.log(uniqueNumbers);
Как видите, Set
имеет только значения, 1, 2, 3
, потому что последние 2, 1
являются дубликатами.
Если у вас есть Set
и вы хотите превратить его обратно в массив, вы можете просто распространить объект Set
внутри массива.
const uniqueNumbersArray = [...uniqueNumbers];
Если я выведу массив uniqueNumbersArray
в консоль, мы увидим следующее.
Свойства и методы объекта Set
Объект Set
поставляется со следующими свойствами и методами:
- Set.size — свойство
size
возвращает количество значений в объектеSet
.
const numbers = [1, 2, 3, 2, 1]; const uniqueNumbers = new Set(numbers); uniqueNumbers.size // returns 3
- Set.add(value) — добавляет значение к объекту
Set
и возвращает объектSet
с добавленным значением.
const numbers = [1, 2, 3, 2, 1]; const uniqueNumbers = new Set(numbers); uniqueNumbers.add(4) // returns Set(4) { 1, 2, 3, 4 }
- Set.delete(value) — удаляет элемент, связанный со значением, и возвращает логическое значение независимо от того, был ли элемент удален или нет.
const numbers = [1, 2, 3, 2, 1]; const uniqueNumbers = new Set(numbers); uniqueNumbers.delete(2) // returns true uniqueNumbers.size // returns 2
- Set.clear() — удаляет все элементы из объекта
Set
и возвращает неопределенное значение.
const numbers = [1, 2, 3, 2, 1]; const uniqueNumbers = new Set(numbers); uniqueNumbers.clear() // returns undefined uniqueNumbers.size // returns 0
- Set.has(value) — возвращает логическое значение, определяющее, присутствует ли элемент со значением в объекте
Set
или нет.
const numbers = [1, 2, 3, 2, 1]; const uniqueNumbers = new Set(numbers); uniqueNumbers.has(2) // returns true uniqueNumbers.has(4) // returns false
Разница между массивом и набором?
В большинстве случаев можно использовать массив. Однако вы захотите использовать Set
, когда вам нужны только уникальные значения и вы хотите избежать дублирования.
Другое существенное различие между массивом и Set
заключается в том, что массив представляет собой упорядоченный список объектов. Вы можете получить доступ к элементам массива, сославшись на его целочисленный индекс в списке. Set
— это неупорядоченный пул уникальных элементов. Поскольку он неупорядочен, нет целочисленного индекса, который можно использовать для доступа к определенному элементу.
Заключение
Спасибо за прочтение! Я надеюсь, что эта статья помогла вам понять объект Set
в JavaScript.
Спустя почти 6 месяцев изучения JavaScript я впервые столкнулся с объектом Set
. Я не считаю, что это фундаментальная концепция, необходимая при первом изучении JavaScript, но, безусловно, хорошо знать, что она существует на тот момент, когда вам понадобится ее использовать!
Если вы хотите продолжить изучение JavaScript, ознакомьтесь со статьями ниже.