> Можно ли сравнить два объекта в JavaScript и как это сделать (JavaScript)

Уровень: senior · Роль: frontend · Категория: Технические вопросы

Компании: X5Tech

Стек: JavaScript

> Пример ответа

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

Простой способ - преобразовать объекты в JSON и сравнить строки:

JAVASCRIPT
JSON.stringify(obj1) === JSON.stringify(obj2)

Но это ненадёжно: порядок ключей может отличаться, а методы или undefined теряются.

Более корректный вариант - рекурсивная функция:

JAVASCRIPT
function 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 и т.д.).

> ГОТОВЫ К СЛЕДУЮЩЕМУ СОБЕСЕДОВАНИЮ?

Запустите тренировочную сессию с ИИ и получите детальную обратную связь, чтобы увереннее проходить реальные интервью