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]
.