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}})?