js如何判断两个对象(键值对)是否相等?

时间: 作者:admin 浏览:

判断两个键值对对象是否相等,分两种情况:

1、考虑属性顺序
2、不考虑属性顺序;

考虑属性顺序,即完全相等,那相对简单:

首先,我们先来判断一个对象是否键值对对象;

function isPlainObject(obj){
    return typeof obj === 'object' && Object.prototype.toString.call(obj) === '[object Object]'
}

属性个数是否相同:

function getObjectLen(obj){
    return Object.keys(obj).length
}

第一种,两个对象完全相等(包括属性顺序):

function isEqualObject(obj1, obj2){
    return isPlainObject(obj1) && 
                isPlainObject(obj2) &&
                getObjectLen(obj1) === getObjectLen(obj2) &&
                JSON.stringify(obj1) === JSON.stringify(obj2)
}

第二种,两个对象属性相等,但顺序不相同:

function isEqualObject(obj1, obj2){
    if( !isPlainObject(obj1) || !isPlainObject(obj2)  ){
        return obj1 === obj2
    }
    if(getObjectLen(obj1) !== getObjectLen(obj2)){
        return false
    }
    for(let key in obj1){
        if( isPlainObject(obj1[key]) && isPlainObject(obj2[key])  ){
            if(!isEqualObject(obj1[key], obj2[key])){
                return false
            }
        }else if(obj1[key] !== obj2[key]){
            return false
        }
    }
    return true
}

今天就到这里,赶紧试试吧

前端新手交流群
欢迎加入web前端新手交流qq群:
734802480(已满)、 794324979

更多文章

栏目文章


Copyright © 2014-2023 seozhijia.net 版权所有-粤ICP备13087626号-4