Set.prototype.has() в JavaScript
Метод has() проверяет, есть ли значение в коллекции Set. Если есть, он возвращает true, иначе - false.
Синтаксис
set.has(value)
Обычно метод вызывают у конкретной коллекции. Запись Set.prototype.has означает, что этот метод доступен всем объектам Set.
let technologies = new Set(['HTML', 'CSS', 'JavaScript'])
technologies.has('CSS') // true
technologies.has('React') // false
У Set нет метода includes(). Для проверки значения используется именно has().
Проверка перед действием
Результат has() удобно использовать в условии, когда дальнейшее действие зависит от того, встречалось ли значение раньше.
let viewedLessons = new Set([101, 102])
let lessonId = 103
if (viewedLessons.has(lessonId)) {
console.log('Урок уже просмотрен')
} else {
console.log('Урок ещё не просмотрен')
}
Перед добавлением значения вызывать has() не обязательно: Set сам не добавит повтор.
let viewedLessons = new Set([101, 102])
viewedLessons.add(102)
console.log(viewedLessons.size) // 2
Проверка объектов
Объекты сравниваются по ссылке. Поэтому для проверки нужно передать тот же объект, который был добавлен в Set.
let user = { id: 1 }
let users = new Set([user])
users.has(user) // true
users.has({ id: 1 }) // false