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);
const keysB = Object.keys(b);
if (keysA.length !== keysB.length) {
return false;
}
for (const key of keysA) {
if (!keysB.includes(key)) {
return false;
}
if (!deepEqual(a[key], b[key])) {
return false;
}
}
return true;
}
const a = {
name: "Tom",
age: 18,
info: {
gender: "male",
address: {
province: "Guangdong",
city: "Shenzhen",
},
},
};
const b = {
name: "Tom",
age: 18,
info: {
gender: "male",
address: {
province: "Guangdong",
city: "Shenzhen",
},
},
};
const c = {
name: "Jerry",
age: 18,
info: {
gender: "male",
address: {
province: "Guangdong",
city: "Shenzhen",
},
},
};
console.log(deepEqual(a, b));
console.log(deepEqual(a, c));
console