判断两个对象是否相等
思路:
- 首先判断两个比较的对象是不是Object
- 如果都是对象,再比较两个对象的长度是否相等
- 如果长度相等,再比较对象的属性是否相等
function compareObject(obj1, obj2) {
if (typeof obj1 !== 'object' || typeof obj2 !== 'object') {
return false
}
const attrs1 = Object.getOwnPropertyNames(obj1)
const attrs2 = Object.getOwnPropertyNames(obj2)
if (attrs1.length !== attrs2.length) {
return false
}
for (let key in obj1) {
let o1 = typeof obj1[key] === 'object'
let o2 = typeof obj2[key] === 'object'
// 如果都是对象,继续递归比较
if (o1 && o2) {
return compareObject(obj1[key], obj2[key])
} else {
// 如果不是对象,就比较它们的值
if (obj1[key] !== obj2[key]) {
return false
}
}
}
// 别忘了如果全部循环都没有出现false,最后记得return ture
return true
}
var obj1 = {
name: '1',
age: '12',
objs: {
size: 'eee',
value: '3'
}
}
var obj2 = {
age: '12',
name: '1',
objs: {
size: 'eee',
value: '3'
}
}
let value = compareObject(obj1, obj2)
console.log(value)