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