如何深入比较两个对象是否相等
话不多说直接上代码,另外不考虑是函数的情况
/**
* 判断是否是对象
* @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
}

浙公网安备 33010602011771号