Не забывайте о порядке ключей

Равенство в JavaScript - один из самых запутанных аспектов, который заставит вас почесать в затылке. В отличие от других языков, где вы могли бы подумать, что оператор равенства == или === будет вести себя должным образом, но, к вашему удивлению, это не так.
Поскольку объекты являются ссылочными типами, вы не можете использовать обычные операторы равенства, то есть == или ===.
Как же тогда проверять объекты на равенство? Есть несколько подходов, которые вы можете предпринять (проверьте в конце статьи), но в этой статье основное внимание уделяется тому, почему вам не следует использовать JSON.stringify.
Почему не JSON.stringify?
JSON.stringify кажется наиболее очевидным и простым выбором для сравнения, поскольку не требуется никакой внешней зависимости.
Но подождите! Это не так просто, как кажется, судя по названию, этот метод сначала преобразует объекты в строки, а затем выполняется сравнение.
JavaScript не гарантирует порядок ключей. Пример:

Итак, если сравниваемые объекты имеют свойства, введенные в том же порядке, сравнение будет работать нормально, но в последнем случае, когда порядок изменился, равенство не выполняется.
Заключение
Хотя он работает без установки библиотек или пакетов из npm, JSON.stringify, безусловно, не лучший вариант для сравнения объектов.
Альтернативы для сравнения
У сообщества JavaScript есть и другие методы для сравнения объектов: