Set

Set - это тип объекта, коллекция или структура данных, где хранятся только уникальные значения, которые могут быть, как примитивами, так и объектами. При добавлении элемента в 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

add()

Добавляет элемент в коллекцию и возвращает обновленный 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'}
  

delete()

Удаляет элемент из коллекции и возвращает true, если такой был в Set и false если нет.

  
  newSet.delete('new element') // true
  

clear()

Удаляет все элементы из объекта.

  
  let newSet = new Set(['new element', 'second element'])

  newSet.clear() // {}
  

has()

Проверяет, есть ли элемент в коллекции, если да, то возвращает true, в противном случае false.

  
  let newSet = new Set(['new element', 'second element'])

  newSet.has('second element') // true
  newSet.has('third element') // false
  

size

Свойство которое хранит в себе информацию о количестве элементов в Set.

  
  let newSet = new Set(['new element', 'second element'])

  console.log(newSet.size) // 2
  

Перебор элементов Set

Так как элементы Set не содержат индексов, обратиться к ним напрямую не получиться, но перебрать можно, используя метод 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 имеет следующие встроенные методы