Кратко
СкопированоМетод has проверяет, содержится ли значение в коллекции Set. Если значение есть в коллекции, метод вернёт true, в противном случае — false.
Пример
Скопировано
const watchList = new Set(['Сияние', 'Интерстеллар', 'Казино'])console.log(watchList.has('Казино'))// trueconsole.log(watchList.has('Чёрная пантера'))// false
const watchList = new Set(['Сияние', 'Интерстеллар', 'Казино'])
console.log(watchList.has('Казино'))
// true
console.log(watchList.has('Чёрная пантера'))
// false
Как пишется
СкопированоМетод принимает один аргумент — значение, которое нужно проверить.
Возвращает булево значение:
trueесли коллекция содержит искомое значение;falseесли значения в коллекции нет.
На практике
Скопированосоветует
Скопировано🛠 Нужно быть осторожным при работе с объектами. Объекты хранятся и сравниваются по ссылке, поэтому результат такого кода может удивить:
const users = new Set([ {name: 'Иван', lastName: 'Петров'}, {name: 'Пётр', lastName: 'Иванов'}])console.log(users.has({name: 'Иван', lastName: 'Петров'}))// false 🤷♂️
const users = new Set([
{name: 'Иван', lastName: 'Петров'},
{name: 'Пётр', lastName: 'Иванов'}
])
console.log(users.has({name: 'Иван', lastName: 'Петров'}))
// false 🤷♂️
Дело в том, что два Ивана Петрова на самом деле разные Иваны Петровы. Это легко заметить, если обратить внимание на фигурные скобки. Каждая пара фигурных скобок создаёт новый независимый объект, хотя они и выглядят одинаково.
Если сравнить их между собой, то результат сравнения тоже будет false:
console.log({name: 'Иван', lastName: 'Петров'} === {name: 'Иван', lastName: 'Петров'})// false
console.log({name: 'Иван', lastName: 'Петров'} === {name: 'Иван', lastName: 'Петров'})
// false
Проверка сработает корректно, если мы будем искать тот же объект:
const petrov = {name: 'Иван', lastName: 'Петров'}const ivanov = {name: 'Пётр', lastName: 'Иванов'}const users = new Set([petrov, ivanov])console.log(users.has(petrov))// true
const petrov = {name: 'Иван', lastName: 'Петров'}
const ivanov = {name: 'Пётр', lastName: 'Иванов'}
const users = new Set([petrov, ivanov])
console.log(users.has(petrov))
// true
🛠 Если вам нужно добавить значение в Set, то можно не проверять, есть ли уже значение в коллекции. Вызывайте add. Если элемент уже есть в коллекции, то добавление будет проигнорировано. Аналогично с delete.