Когда Set
содержит объект, .has()
определяет, содержит ли Набор тот же самый точный объект, а не содержит ли Набор объект, который содержит те же данные, что и какой-либо другой объект.Он должен содержать один и тот же объект.
Итак, .has(someObj)
или .has(someArray)
возвращает true
, только если этот фактический объект находится в Set
.Он не сравнивается, чтобы увидеть, есть ли похожий объект с одинаковыми значениями / свойствами в Set
, только если сам фактический объект находится в Set
.
Он работает аналогично сравнению двух объектов с===
как и в obj1 === obj2
.
Если вы хотите что-то с функциями, похожими на Set, которое сообщит вам, если у него есть какой-либо другой объект, совпадающий с текущим, вам придется написать другую коллекциюсебя и реализовать свой собственный алгоритм сравнения.Это не то, как Set
или Map
работают.
Вы можете увидеть некоторые другие обсуждения аналогичной темы здесь: Как настроить равенство объектов для JavaScript Set