实现对象深度比较
- 如何判断2个对象内部的属性和值是否都相等呢?以下是代码实现
//深度比较
function isObject(obj){
return typeof obj === 'object' && obj != null
}
function isEqual(obj1,obj2){
//不是对象的情况---一般是值
if (!isObject(obj1) || !isObject(obj2)){
return obj1 === obj2
}
//传入两个相同的对象
if (obj1 === obj2){
return true
}
//判断key的个数是否相同
if (Object.keys(obj1).length !== Object.keys(obj2).length){
return false
}
//比较obj1/obj2每一项是否相同
for (let key in obj1){
//递归
let res = isEqual(obj1[key],obj2[key])
if (!res){
return false
}
}
return true
}