【发布时间】:2018-02-10 17:13:39
【问题描述】:
我有递归函数,它通过深度嵌套的对象或对象数组查找并按键找到想要的对象。问题是当我想返回结果对象时,我得到了未定义,我不知道为什么。当我控制台日志结果时,我得到正确的结果。
function checkForDependency(name, scope) {
if (Array.isArray(scope)) {
scope.forEach((el) => {
return checkForDependency(name, el)
})
} else if (typeof scope === 'object') {
if (scope.hasOwnProperty('name') && scope.name == name && scope.hasOwnProperty('dependency')) {
console.log('dependency:', scope.dependency)
return {
type: scope.dependency
}
} else {
for (let key in scope) {
if (Array.isArray(scope[key]) || typeof scope[key] === 'object') {
return checkForDependency(name, scope[key])
}
}
}
}
}
你能帮帮我吗?
【问题讨论】:
-
你使用什么类型的输入来得到错误的结果?
-
请点击
<>并创建minimal reproducible example -
您能否提供此函数的示例输入
-
您有一个
if,后跟一个else if...else块在哪里。在您的else if块内也是如此,for-loop后面没有任何内容。如果这是一个递归函数,你不能让任何路径保持原样,这可能就是你有时会变得不确定的原因 -
我猜问题出在你的 .forEach 函数上。在第 4 行中,您从一个匿名函数返回,而不是从您的实际递归函数返回。
标签: javascript recursion