Обычно при сравнении типов данных , таких как int
и strings
в JavaScript, вы используете операторы равенства ( ==
и ===
). Однако сравнение объектов с ==
и ===
не будет работать.
Чтобы исправить это, один из вариантов — преобразовать оба объекта в строку, а затем использовать операторы равенства.
Использование JSON.stringify()
Сначала мы преобразуем объекты в их строковую версию, используя JSON.stringify ()
, а затем сравните их, используя ===
:
const obj1 = {"a": 1, "b": 2}; const obj2 = {"a": 1, «b»: 2}; console.log (JSON.stringify (obj1) === JSON.stringify (obj2)); //верно
Если порядок свойств отличается , указанный выше метод будет оцениваться как ложный, даже если свойства одинаковы:
const obj1 = {"a": 1, "b": 2}; const obj2 = {"b": 2, "a": 1}; консоль .log (JSON.stringify (obj1) === JSON.stringify (obj2)); //ложь
Чтобы решить эту проблему, мы можем использовать вместо этого используется библиотека JavaScript, называемая lodash .
Использование lodash
lodash — это Библиотека JavaScript, которая предлагает _. IsEqual (value1, value2)
, который выполняет глубокое сравнение между двумя значениями, чтобы проверить, эквивалентны ли они.
import _ from "lodash"; const obj1 = {"a" : 1, "b": 2}; const obj2 = {"b": 2, "a": 1}; console.log (_. isEqual (obj1, obj2)); //верно