Q41 [Coding]: Write a deepEqual function to compare two objects deeply.

function deepEqual(a, b) {
  if (a === b) return true;
  if (a == null || typeof a !== 'object' || b == null || typeof b !== 'object') {
    return false;
  }
  const keysA = Object.keys(a);
  const keysB = Object.keys(b);
  if (keysA.length !== keysB.length) return false;
  for (let key of keysA) {
    if (!keysB.includes(key) || !deepEqual(a[key], b[key])) {
      return false;
    }
  }
  return true;
}
Key Takeaways
  • Compares primitives via === and recursively inspects nested object keys.
  • Validates key count matching prior to recursive nested property checks.
Knowledge Check

What is the return value of deepEqual({a: 1, b: {c: 2}}, {a: 1, b: {c: 2}})?