我正在尝试在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;
}
}
}
答案 0 :(得分:0)
您的代码当前正在做的事情并非真正的递归。
我们说我给它{}
和{}
进行比较。他们应该平等地报告,对吧?
你的代码是:
deepEqual({},{});
typeof a === "object"
- true!typeof b === "object"
- true!deepEqual(a,b)
但请坚持......那与第一次通话完全一样!你有一个很好的无限循环。
相反,您应该在for..in
和a
的属性上使用b
循环,并在这些属性上调用deepEqual
。