【JS】递归判断两个对象属性值是否相等

function isObjectValueEqual (a, b) {
        //取对象a和b的属性名
        var aProps = Object.getOwnPropertyNames(a);
        var bProps = Object.getOwnPropertyNames(b);
        if (aProps.length != bProps.length) {
            return false;
        }
        //循环取出属性名,再判断属性值是否一致
        for (var i = 0; i < aProps.length; i++) {
            var propName = aProps[i];
            var type = typeof a[propName];
            if(type === 'object'){
                //值是对象类型就递归
                if(!isObjectValueEqual(a[propName],b[propName])){
                    return false;
                }
            }else{
                if(a[propName] !== b[propName]) {
                    return false;
                }
            }
        }
        return true
    }

推荐阅读更多精彩内容

  • 好可怕,我刚才尝试做了镜像练习。一开始的时候对自己说:“小张,我爱你。”简直不好意思开口啊,声音也小,自己看着、听...
    冲关破境阅读 90评论 0 1
  • 第133天 2019--03--23 感恩大自然恩赐的阳光雨露和空气等,无私滋养着宇宙万物!感恩父母的生养之...
    傻妞幸福阅读 65评论 0 1