Код Middle Реализация с нуля обновлено
Разница двух объектов
Условие
Верни объект с ключами, которые добавились, изменились или пропали. Для пропавших значение undefined. Сравнение поверхностное по Object.is.
Что проверяют тесты
изменённое поле
добавленное поле
пропавшее поле
нет изменений
NaN не считается изменением
Как подойти
Основа для частичных обновлений (PATCH вместо PUT) и для логов изменений. Object.is вместо === убирает ложное срабатывание на NaN и различает +0 и −0. Ключ in after - единственный способ отличить удаление от записи undefined, а это разные операции на бэкенде.
Подсказки: 3
- Два прохода: по новым ключам и по исчезнувшим.
- Object.is корректно сравнивает NaN, в отличие от ===.
- Отличай «ключ есть со значением undefined» от «ключа нет» через in.
Решите в тренажёре
Редактор с автотестами прямо в браузере. Можно решить спокойно, вслух или под таймером, как на собесе.