// 思路:1,判断两个对象的地址是否相等。2,判断两个对象的键的个数是否相等。3,判断每个键对应的值是否相等。 function isObjectValueEqual(a, b) { // 1,判断两个对象的引用地址是否相等 if (a === b) return true; // 2,判断两个对象的键的个数是否相等 let aProps = Object.getOwnPropertyNames(a); let bProps = Object.getOwnPropertyNames(b); if (aProps.length !== bProps.length) return false; //3,判断每个键对应的值是否相等 for (const k in a) { if (b.hasOwnProperty(k)) { if(typeof a[k] === 'object'){ // 递归 if(!isObjectValueEqual(a[k], b[k])) return false }else { if(a[k] !== b[k]) return false } } else { return false; } } return true } let element1 = { name: "jacky", age: 18, attribute: { width: 100 } ,list: [1,2,3] }; let element2 = { name: "jacky", age: 18, attribute: { width: 100 } ,list: [1,2,3] }; let result = isObjectValueEqual(element1, element2); console.log("result", result); //true