Object对象是引用类型,即使两个对象的所含的内容完全相等,普通的判断(用“==”判断),他们却是不等的(返回false)
let obj1={ name:"cario",age:23};
let obj2={name:"cario",age:23};
obj1 == obj2/// return false
通过以下方法equals进行判断:
function equals(x,y){
var f1=x instanceof Object;
var f2=y instanceof Object;
if(!f1 || !f2){
return x===y
}
if(Object.keys(x).length!== Object.keys(y).length){
return false
}
for(var p in x){
var a= x[p] instanceof Object;
var b= y[p] instanceof Object;
if(a && b){
equals(x[p],y[p])
}else if(x[p]!=y[p]){
return false;
}
}
return true;
}
正确判断:
equals(obj1,obj2)// return true