Код Middle Реализация с нуля обновлено

deepEqual

Условие

Глубокое сравнение: примитивы, массивы, простые объекты, NaN, null.

Что проверяют тесты

  • вложенные объекты

  • разные значения

  • разный набор ключей

  • NaN равен NaN

  • null не объект

  • массив против объекта

  • +0 и -0

Как подойти

Порядок проверок: Object.is (примитивы + NaN) → отсеять не-объекты и null → сравнить «массивность» → сравнить число ключей → рекурсия по ключам. Follow-up: Date, RegExp, Map/Set, циклические ссылки (WeakMap посещённых).

Подсказки: 3
  1. Начни с Object.is - он закрывает примитивы и заодно NaN.
  2. typeof null === 'object' - проверяй на null отдельно.
  3. Сравни количество ключей, иначе лишние ключи справа не заметишь.

Решите в тренажёре

Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.