почему Set в Javascript не убирает дубликаты объектов?
Ответы
Nikolai Gagarinov
28 апреля 2022
Set работает с примитивами по значению и объектами по ссылке. Т.е. если один и тот же объект будет добавляться в множество, то объект будет там в единственном экземпляре. Пример
Создадим наше множество и два пустых объекта
const set = new Set()
const obj = {}
const obj2 = {}
Добавим в set созданные обьекты по одной штуке
set.add(obj) // { {} }
set.add(obj2) // { {}, {} }
Сейчас в Set по одному объекту - первый и второй. Добавим еще раз первый объект
set.add(obj) // { {}, {} }
console.log(set)
// => Set(2) { {}, {} }
Видим, что из-за того, что объекты передаются по ссылке, то они будут уникальны (т.е. щас в set также 2 объекта). А если добавим новый объект (без константы), то он добавится без проблем.
set.add({}) // { {}, {}, {} }
1
0