gpt4 book ai didi

javascript - 如何在递归函数中跳出 for 循环并在 Javascript 中返回?

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

我正在尝试比较两个对象的键,属性值无关紧要。

var obj1 = {
foo: {
abc: "foo.abc",
},
bar: {
aaa: {
bbb: "bar.aaa.bbb" // <-- difference
}
}
};

var obj2 = {
foo: {
abc: "foo.abc",
},
bar: {
aaa: {
ccc: "bar.aaa.ccc" // <-- difference
}
}
};
// function should return true if properties are identical, false otherwise
function compareObjProps(obj1, obj2) {
for(var prop in obj1) {

// when comparing bar.aaa.bbb and bar.aaa.ccc
// this does get logged, but the function doesn't return false
if(!obj2.hasOwnProperty(prop)) {
console.log("mismatch found");
return false;
}

if(typeof(obj1[prop]) === "object") {
compareObjProps(obj1[prop], obj2[prop]);
}
}

// this always returns
return true;
}

return false 似乎不是从顶层函数返回,而是递归函数返回。

那么,当整个匹配函数执行完毕后,如何返回 false 呢?

最佳答案

您缺少返回:

    if(typeof(obj1[prop]) === "object"
&& !compareObjProps(obj1[prop], obj2[prop]))
{
return false;
}

否则递归调用的结果将被完全忽略。

关于javascript - 如何在递归函数中跳出 for 循环并在 Javascript 中返回?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14889537/

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