Set.prototype.delete() в JavaScript

Метод delete() удаляет указанное значение из коллекции Set. Он возвращает true, если значение было найдено и удалено, и false, если такого значения в коллекции нет.

Синтаксис

set.delete(value)

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

let technologies = new Set(['HTML', 'CSS', 'JavaScript'])

let wasDeleted = technologies.delete('CSS')

console.log(wasDeleted) // true
console.log(technologies) // Set(2) {'HTML', 'JavaScript'}

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

Если значения нет в Set

Если передать значение, которого нет в коллекции, ошибки не будет. Метод вернёт false, а Set останется без изменений.

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

technologies.delete('React') // false

console.log(technologies.size) // 2

Удаление объектов

Чтобы удалить объект, нужно передать ту же ссылку, которая была добавлена в Set. Новый объект с такими же свойствами не подойдёт.

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

users.delete({ id: 1 }) // false
users.delete(user) // true

console.log(users.size) // 0