У вас включен AdBlock или иной блокировщик рекламы.

Пожалуйста, отключите его, доход от рекламы помогает развитию сайта и появлению новых статей.

Спасибо за понимание.

В другой раз
DevGang блог о програмировании
Авторизоваться

Почему вы не должны использовать JSON.stringify для сравнения объектов в JavaScript 

Равенство в JavaScript - один из самых запутанных аспектов. В отличие от других языков, где вы думаете, что оператор равенства == или === будет вести себя так, как должен, но, к вашему удивлению, они этого не делают.

Поскольку объекты являются ссылочными типами, вы не можете использовать свои обычные операторы равенства, то есть == или ===

Как вы проверяете объекты на равенство? Есть несколько подходов, которые вы можете использовать (см. В конце статьи), но эта статья сфокусирована на том, почему вы не должны использовать JSON.stringify.

Почему не JSON.stringify?

JSON.stringify представляется наиболее очевидным и простым выбором для сравнения, поскольку не требуется никакой внешней зависимости.

Но стоп! Это не так просто, как кажется, поскольку название предполагает, что этот метод сначала преобразует объекты в строки, а сравнение происходит позже.

JavaScript не гарантирует порядок ключей. Пример:

Таким образом, если сравниваемые объекты имеют свойства, введенные в том же порядке, сравнение будет работать очень хорошо, но в последнем случае, когда порядок изменился, равенство не выполняется.

Заключение

Хотя это работает без установки библиотек или пакетов из npm, JSON.stringify конечно, не лучший вариант для сравнения объектов.

Альтернативы для сравнения

У сообщества JavaScript есть несколько других методов для сравнения объектов:

#JavaScript