Встречается на собеседованиях • сегодня

Зачем в JavaScript нужны функции глубоко сравнивающие объекты

Глубокая проверка объектов нужна, когда необходимо сравнить их содержимое, а не ссылки. В JS === и == сравнивают только ссылки, что не подходит для сложных структур.

Пример проблемы:

javascript
const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { a: 1, b: { c: 2 } };
console.log(obj1 === obj2); // false, хотя содержимое одинаковое

Решение - рекурсивное сравнение:

javascript
function deepEqual(a, b) {
  if (a === b) return true;
  if (typeof a !== 'object' || typeof b !== 'object') return false;
  
  const keysA = Object.keys(a);
  const keysB = Object.keys(b);
  if (keysA.length !== keysB.length) return false;

  return keysA.every(key => deepEqual(a[key], b[key]));
}

Используется в:

  • Тестах (Jest, Mocha)
  • Оптимизациях (React.memo, shouldComponentUpdate)
  • Работе с состоянием (Redux, Zustand)
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы