Вообще, я бы не рекомендовал воспринимать мои полуночные посты сильно всерьез. Обычно, я просто делюсь чем-то из моей ночной работы над реатомом и не всегда в этот момент я делаю какие-то обще объективные вещи. * https://t.me/xanf_dev/34



Конкретно isDeepEqual не несет большой полезности и имеет кучу ограничений, вроде отсутсвия сравнения значений Map и Set. Добавил ее просто что бы было. И почему isPlainEqual, а не isShallowEqual?



Но в комментарии пришел @rdvornov и указал на конкретную багу, за что ему спасибо. Сравнение количества ключей не сравнивает их названия и при undefined значении отсутсвующего в другом объекте ключа мы получаем не верный результат.



Первый фикс пришедший мне в голову выглядел так: aKeys.sort().join('') === Object.keys(b).sort().join(‘’), но это совсем не производительно и подумав еще немного нашлось более простое и производительное решение - просто проверяем что каждый ключ итерации одного объекта есть в другом объекте: k in b