1先判断俩者是不是对象
2是对象后俩者长度是否一致
3判断俩个对象的所有key值是否相等相同
4判断俩个对象的相应的key对应的值是否相同
来一个递归判断里面的对象循环1-4步骤代码如下:
diff(obj1,obj2){
consolelog('obj12'+obj1,obj2)
var o1 = obj1 instanceof Object;
var o2 = obj2 instanceof Object;
if(!o1 || !o2){/ 判断不是对象 /
return obj1 === obj2;
}
if(Objectkeys(obj1)length !== Objectkeys(obj2)length){
return false;
}
for(var attr in obj1){
var t1 = obj1[attr] instanceof Object;
var t2 = obj2[attr] instanceof Object;
if(t1 && t2){
return diff(obj1[attr],obj2[attr]);
}else if(obj1[attr] !== obj2[attr]){
return false;
}
}
return true;
}像这种问题,可以直接使用Set,省去自己判断在集合中是不是有重复的对象,至于怎么判断两个对象是不是相等, 完全取决与业务,举个例子:一个用户一个ID,如果两个用户的ID一样,说明他们是同一个人,这个时候你就可以用id来判断两个对象是不是一样;方法:重写equals方法:在方法中判断两个对象的id值,相同则返回true,不相同则放回false比较类类型实例时,使用等号判断符或equals方法,默认情况下是判断两个实例符号是否指向相同的实例,除非实例对应的类型override了等号算符等判断相等的函数
对于未重写方法的类型,你需要明确判断相等的概念,即是否要判断两个实例的成员相等
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)