如何深入比较两个对象是否相等

话不多说直接上代码,另外不考虑是函数的情况

    /**
     * 判断是否是对象
     * @param { object } obj 
     */
    function isObj(obj){
        return  typeof obj === 'object' && obj!== null
    }
    /**
     * 深入比较
     * @param { object } obj1 
     * @param { object } obj2
    */
    function isEqual(obj1,obj2){
        //如果不是对象直接对比返回
        if(!isObj(obj1) || !isObj(obj2)){
            //值类型比较
            return obj1 === obj2
        }
        //如果两个对象一样相等则返回true
        if(obj1 === obj2) {
            return true
        }

        const obj1Keys = Object.keys(obj1)
        const obj2Keys = Object.keys(obj2)

        //遍历obj1
        for(let key in obj1) {
            const res = isEqual(obj1[key], obj2[key])
            if(!res) return false
        }

        //以上情况都不是就是全相等
        return true
    }

  

posted @ 2022-04-27 16:10  musicBird  阅读(43)  评论(0编辑  收藏  举报