美文网首页
JS 判断两个对象是否相等

JS 判断两个对象是否相等

作者: 辞暮尔尔_烟火年年 | 来源:发表于2020-06-29 16:03 被阅读0次
    判断两个对象是否相等,执行结果:
    /**
     * [judgeEqual 判断两个对象是否相等]
     * @param  {[Object]} obj              [目标对象]
     * @param  {[Boolean]} undefinedIsNull [undefined 等于 null]
     * @return {[Boolean]}                 [返回结果]
     */
    Object.prototype.judgeEqual = function(obj,undefinedIsNull){
    
        // 需要判断的对象的属性
        const obj1Props = Object.getOwnPropertyNames(this);
        // 目标对象的属性
        const obj2Props = Object.getOwnPropertyNames(obj);
        const propLength = obj1Props.length;
    
        // 长度不等返回false
        if(propLength !== obj2Props.length) {
            return false;
        }
    
        // 遍历值是否相等
        for(let i = propLength - 1; i >= 0; i--){
            let prop = obj1Props[i];
            let currentVal = this[prop];
    
            // 当前的属性值如果为null
            if(currentVal === null){
    
                // undefinedIsNull : false
                if(!undefinedIsNull){
                    if(obj[prop] !== null){
                        return false;
                    }
                }
    
                // undefinedIsNull : true
                else{
                    if(currentVal != this[prop]){
                        return false;
                    }
                }
                
            }
    
            // 属性值非对象,直接判断属性值
            else if(typeof currentVal !== "object"){
                if(currentVal !== obj[prop]){
                    return false;   
                }
            }
    
            // 属性值为对象,继续递归判断
            else{
                if(!currentVal.judgeEqual(obj[prop])){
                    return false;
                }
            }
            
        }
    
        return true;
    }
    

    相关文章

      网友评论

          本文标题:JS 判断两个对象是否相等

          本文链接:https://www.haomeiwen.com/subject/caoofktx.html