Set.prototype.add() в JavaScript

Метод add() добавляет значение в коллекцию Set. Если такое значение уже есть, оно не появится в коллекции второй раз.

Синтаксис

set.add(value)

Обычно метод вызывают у конкретной коллекции. Запись Set.prototype.add означает, что этот метод доступен всем объектам Set.

let technologies = new Set()

technologies.add('HTML')
technologies.add('CSS')

console.log(technologies) // Set(2) {'HTML', 'CSS'}

add() изменяет исходную коллекцию, а не создаёт новую.

Повторное добавление значения

Set хранит только уникальные значения. Поэтому повторный вызов add() с тем же значением ничего не изменит.

let technologies = new Set(['HTML'])

technologies.add('HTML')

console.log(technologies.size) // 1

Добавление нескольких значений

За один вызов add() можно передать только одно значение. Лишние аргументы будут проигнорированы.

let technologies = new Set()

technologies.add('HTML', 'CSS')

console.log(technologies) // Set(1) {'HTML'}

Чтобы добавить несколько значений, нужно вызвать метод несколько раз. Так как add() возвращает сам Set, вызовы можно записать цепочкой.

let technologies = new Set()

technologies
  .add('HTML')
  .add('CSS')
  .add('JavaScript')

console.log(technologies) // Set(3) {'HTML', 'CSS', 'JavaScript'}

Добавление объектов

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

let firstUser = { id: 1 }
let secondUser = { id: 1 }

let users = new Set()

users.add(firstUser)
users.add(secondUser)

console.log(users.size) // 2

Если добавить один и тот же объект повторно, он останется в коллекции в одном экземпляре.

let user = { id: 1 }
let users = new Set()

users.add(user)
users.add(user)

console.log(users.size) // 1