Set - это тип объекта, коллекция или структура данных, где хранятся только уникальные значения, которые могут быть, как примитивами, так и объектами. При добавлении элемента в Set происходит проверка, если значение уже встречается, тогда повторно оно не записывается. Элементы в Set не проиндексированы и располагаются в коллекции в порядке их добавления.
let newSet = new Set()
При создании Set в коллекцию сразу же можно добавить элементы используя переменную или напрямую вставив массив.
let array = [1,1,3,3,4,5,6]
let newSet = new Set(array) // {1, 3, 4, 5, 6}
let newSetVar2 = new Set([1,1,3,3,4,5,6]) // {1, 3, 4, 5, 6}
Результатом будет коллекция с неповторяющимися элементами.
Для проверки элементов на дубли используется строгое сравнение, так, что если добавить в коллекцию 1 и '1' в Set попадет и то и другое.
let newSet = new Set(['1', 1]) // {'1', 1}
Также стоит учитывать, что если добавить два объекта с одинаковыми свойствами, но хранимые, например, в разных переменных (имеют разные ссылки на место в памяти), то в Set попадет, как первый, так и второй объект.
let newSet = new Set()
const firstElem = { JavaScript: 'basic' }
const secondElem = { JavaScript: 'basic' }
newSet.add(firstElem)
newSet.add(secondElem)
newSet.size // 2
Добавляет элемент в коллекцию и возвращает обновленный Set.
let newSet = new Set()
newSet.add('new element') // {'new element'}
Для того, чтобы добавить еще один элемент, необходимо записать новый add(), если перечислять элементы через запятую в объект будет записан только первый.
newSet.add('new element', 1, 3, 4) // {'new element'}
newSet.add('second element') // {'new element', 'second element'}
Удаляет элемент из коллекции и возвращает true, если такой был в Set и false если нет.
newSet.delete('new element') // true
Удаляет все элементы из объекта.
let newSet = new Set(['new element', 'second element'])
newSet.clear() // {}
Проверяет, есть ли элемент в коллекции, если да, то возвращает true, в противном случае false.
let newSet = new Set(['new element', 'second element'])
newSet.has('second element') // true
newSet.has('third element') // false
Свойство которое хранит в себе информацию о количестве элементов в Set.
let newSet = new Set(['new element', 'second element'])
console.log(newSet.size) // 2
Так как элементы forEach() или цикл for … of.
let newSet = new Set(['JS', 'HTML', 'CSS', 'React'])
newSet.forEach(elem => {
console.log(elem)
})
или
let newSet = new Set(['JS', 'HTML', 'CSS', 'React'])
for (let elem of newSet) {
console.log(elem)
}
Также Set имеет следующие встроенные методы
values() - возвращает новый объект со всеми значениями коллекции в порядке их добавления в Set;keys() - возвращает, тоже, что и values();entires() - возвращает объект, который при переборе возвращает элементы в виде [value, value].