实现对象深度比较

79 阅读1分钟

实现对象深度比较

  1. 如何判断2个对象内部的属性和值是否都相等呢?以下是代码实现
//深度比较
function isObject(obj){
    return typeof obj === 'object' && obj != null
}
function isEqual(obj1,obj2){
    //不是对象的情况---一般是值
    if (!isObject(obj1) || !isObject(obj2)){
        return obj1 === obj2
    }
    //传入两个相同的对象
    if (obj1 === obj2){
        return true
    }
    //判断key的个数是否相同
    if (Object.keys(obj1).length !== Object.keys(obj2).length){
        return false
    }

    //比较obj1/obj2每一项是否相同
    for (let key in obj1){
        //递归
        let res = isEqual(obj1[key],obj2[key])
        if (!res){
            return false
        }
    }
    return true
}