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

Разница двух объектов

Условие

Верни объект с ключами, которые добавились, изменились или пропали. Для пропавших значение undefined. Сравнение поверхностное по Object.is.

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

  • изменённое поле

  • добавленное поле

  • пропавшее поле

  • нет изменений

  • NaN не считается изменением

Как подойти

Основа для частичных обновлений (PATCH вместо PUT) и для логов изменений. Object.is вместо === убирает ложное срабатывание на NaN и различает +0 и −0. Ключ in after - единственный способ отличить удаление от записи undefined, а это разные операции на бэкенде.

Подсказки: 3
  1. Два прохода: по новым ключам и по исчезнувшим.
  2. Object.is корректно сравнивает NaN, в отличие от ===.
  3. Отличай «ключ есть со значением undefined» от «ключа нет» через in.

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

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