почему Set в Javascript не убирает дубликаты объектов?

Аватар пользователя Nikolai Gagarinov
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
Познакомьтесь с основами JavaScript бесплатно