![](/img/trans.png)
[英]Error comparing arrays using deepEqual. What is my mistake and why?
[英]Make my own deepEqual
我正在尝试在JavaScript中创建自己的deepEqual
函数。 它将比较两个值,如果它们是相同的值,则返回true。 如果这两个值是对象,它将进行递归,再次调用deepEqual
来比较这些对象内的值。
有没有人可以帮助我? 我认为最令人困惑的部分是如何遍历对象的属性以及这些属性是否具有相同的名称和相同的值。
我写了一些下面的代码:
function deepEqual(a, b) {
if ((typeof a === "object") && (typeof b === "object")) {
deepEqual(a, b);
} else {
if (a !== b) {
return false;
} else {
return true;
}
}
}
您的代码当前正在做什么不是真正的递归。
假设我给它{}
和{}
进行比较。 他们应该报告平等,对不对?
您的代码如下:
deepEqual({},{});
typeof a === "object"
-是的! typeof b === "object"
-是的! deepEqual(a,b)
但是等一下...与第一次通话完全一样! 您有一个不错的无限循环。
相反,您应该在a
和b
的属性上使用for..in
循环,并在这些属性上调用deepEqual
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.