Код Middle Реализация с нуля обновлено
deepEqual
Условие
Глубокое сравнение: примитивы, массивы, простые объекты, NaN, null.
Что проверяют тесты
вложенные объекты
разные значения
разный набор ключей
NaN равен NaN
null не объект
массив против объекта
+0 и -0
Как подойти
Порядок проверок: Object.is (примитивы + NaN) → отсеять не-объекты и null → сравнить «массивность» → сравнить число ключей → рекурсия по ключам. Follow-up: Date, RegExp, Map/Set, циклические ссылки (WeakMap посещённых).
Подсказки: 3
- Начни с Object.is - он закрывает примитивы и заодно NaN.
- typeof null === 'object' - проверяй на null отдельно.
- Сравни количество ключей, иначе лишние ключи справа не заметишь.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.