gpt4 book ai didi

循环返回语句中的javascript递归不起作用

转载 作者:行者123 更新时间:2023-11-29 19:26:30 25 4
gpt4 key购买 nike

我有一个循环,其中有一个不返回和停止的递归函数。这是代码

var obj = {
here: { is: "an" },
object: 2
};
var obj1 = {
here: { is: "aan" },
object: 2
};
function objectTester(x) {
if (typeof x === 'object' && x !== null)
return true;
else
return false;
}

function deepEqual(valOne, valTwo) {
debugger
if (objectTester(valOne) && objectTester(valTwo)) {
for (key in valOne) {
if (valTwo.hasOwnProperty(key)) {
if (objectTester(valOne[key]) && objectTester(valTwo[key])) {
deepEqual(valOne[key], valTwo[key]);
}
else {
if (valOne[key] === valTwo[key]) {
}
else {

return false; //function dose not stop executing and return false
}

}

}
else {

return false;
}
}
return true;
}
else {

return false;
}
}
console.log(deepEqual(obj, obj1));

Link

最佳答案

当你在这里递归调用 deepEqual 时:

if (objectTester(valOne[key]) && objectTester(valTwo[key])) {
deepEqual(valOne[key], valTwo[key]);
}

您忽略了递归调用的返回值,因此无论内部对象是否相等,它都会遍历所有内容。

尝试

if(!deepEqual(valOne[key], valTwo[key])){ return false }

另一种方法是抛出异常(并在顶部捕获它)而不是返回 bool 值。这会让您的控制流直接跳出,无论您有多少层递归。

关于循环返回语句中的javascript递归不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30480006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com