Ivanq
@Ivanq
Знаю php, js, html, css

Сравнение объектов?

Да, да, да. На Тостере уже были такие вопросы. В гугле все тоже есть... но не то.
Нужно сравнить данные в JS. Как сравнить числа, строки, булы и т. д. - ясно. А как быть с массивами и объектами? Простое сравнение ничего не даст - будет false. Перебор тоже не особо поможет - сравним, например, window и... window. Программа тут же запутается - вылетит с too much recursion. Оно и ясно. window.window.window.window === window. И это можно продолжать вечно. Как сравнить объекты? Желательно без библиотек.

PS И не советуйте мне Object.is (он не для этого) и тому подобное.
  • Вопрос задан
  • 6803 просмотра
Решения вопроса 1
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
для каждого случая свои способы:

1) window === window (это с любыми глобальными или импортируемыми объектами)
2) рекурсивное сравнение объектов, но надо хэндлить циклические ссылки по хорошему.
3) JSON.stringify(a) === JSON.stringify(b) как альтернатива второму. Страдает теми же проблемами, надо циклические ссылки самому хэндлить.
4) lodash.isEqual
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы