判断两个对象是否相等

思路:

  1. 首先判断两个比较的对象是不是Object
  2. 如果都是对象,再比较两个对象的长度是否相等
  3. 如果长度相等,再比较对象的属性是否相等
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)