> Можно ли сравнить два объекта в JavaScript и как это сделать (JavaScript)
Уровень: senior · Роль: frontend · Категория: Технические вопросы
Компании: X5Tech
Стек: JavaScript
> Пример ответа
Да, сравнить два объекта в JavaScript напрямую через == или === нельзя - они сравнивают ссылки, а не содержимое. Для глубокого сравнения нужно проверять структуру и значения свойств.
Простой способ - преобразовать объекты в JSON и сравнить строки:
JAVASCRIPTJSON.stringify(obj1) === JSON.stringify(obj2)
Но это ненадёжно: порядок ключей может отличаться, а методы или undefined теряются.
Более корректный вариант - рекурсивная функция:
JAVASCRIPTfunction deepEqual(a, b) {if (a === b) return true;if (typeof a !== 'object' || a === null || typeof b !== 'object' || b === null) return false;const keysA = Object.keys(a), keysB = Object.keys(b);if (keysA.length !== keysB.length) return false;return keysA.every(key => deepEqual(a[key], b[key]));}
Для продакшена лучше использовать библиотеки вроде Lodash (_.isEqual), которые учитывают краевые случаи (циклические ссылки, Map, Set и т.д.).
> Похожие задачи по frontend
Как сборщик мусора находит неиспользуемые объекты в JavaScript
В чем отличие передачи параметров по значению и по ссылке в JavaScript?
Какие способы выполнения HTTP-запросов в браузере на JavaScript?
В чем отличие массивов от объектов в JavaScript
> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?
Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью