思路:深度比较两个对象,就是要深度比较对象的每一个元素。=> 递归
-
递归退出条件: -
被比较的是两个值类型变量,直接用“===”判断 -
被比较的两个变量之一为 null,直接判断另一个元素是否也为 null -
提前结束递推: -
两个变量 keys 数量不同 -
传入的两个参数是同一个变量 -
递推工作: - 深度比较每一个 key
function isEqual(obj1, obj2){
//其中一个为值类型或null
if(!isObject(obj1) || !isObject(obj2)){
return obj1 === obj2;
}
//判断是否两个参数是同一个变量
if(obj1 === obj2){
return true;
}
//判断keys数是否相等
const obj1Keys = Object.keys(obj1);
const obj2Keys = Object.keys(obj2);
if(obj1Keys.length !== obj2Keys.length){
return false;
}
//深度比较每一个key
for(let key in obj1){
if(!isEqual(obj1[key], obj2[key])){
return false;
}
}
return true;
}
原文始发于微信公众号(消失的程序员):手写深度比较 isEqual
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/250712.html