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

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

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

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

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

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

Похожие вопросы