isEqual
//判断是否是对象
function isObject(obj) {
return typeof obj === 'object' && obj !== null
}
//js对象深度比较 全相等
function isEqual(obj1,obj2) {
//如果传入的不是对象,那就直接比较并且返回
if(!isObject(obj1) || !isObject(obj2)) {
return obj1 === obj2
}
//如果传入的两个对象为同一个,那直接返回true
if(obj1 === obj2) {
return true
}
//如果两个对象的key的长度不一致,返回false
obj1Keys = Object.keys(obj1)
obj2Keys = Object.keys(obj2)
if(obj1Keys.length !== obj2Keys.length) {
return false
}
//递归比较
for (let key in obj1) {
const res = isEqual(obj1[key], obj2[key])
if(!res) {
return false
}
}
return true
}
const obj1 = {
a: 100,
b: 200,
c: {
x: 1,
y: 2
}
}
const obj2 = {
a: 100,
b: 200,
c: {
x: 1,
y: 2
}
}
console.log(isEqual(obj1, obj2)) //true