为了练习/娱乐递归,我希望构建一个递归函数,执行两个唯一对象的深度比较。 我迄今为止的代码,带有伪代码注释。
我认为我的错误可能在于对delete的理解,因为递归没有解决obj1和obj2的减小大小。
function deepCompare(obj1, obj2) {
//Base Cases
if (obj1 === obj2) {
return true;
};
if (Object.keys(obj1).length !== Object.keys(obj2).length) {
return false;
};
//Getting arbitrary key of obj1
var key = Object.keys(obj1)[0];
//Check to see if key is in obj2
if (obj2.hasOwnProperty(key)) {
//Check equality of value at key
if (obj2.key == obj1.key) {
//Remove key/value pair from each object, recursively call
delete obj2.key;
delete obj1.key;
deepCompare(obj1, obj2);
} else {
return false;
}
} else {
return false;
}
}
rta
变量。你只需要使用if (!deepcompare(a[k], b[k])) return false;
。 - iCollect.it Ltd