原生JS实现嵌套评论递归查找函数返回undefined如何解决
问题原因
forEach回调的return仅能终止当前单次回调的执行,无法中断整个遍历流程,也不能将返回值传递给外层的recursiveSearch函数;同时你在递归调用recursiveSearch(response, target)时没有接收返回值,就算深层嵌套中找到了目标对象,也无法将结果赋值给外层的result变量,最终导致函数返回undefined。
修复代码
推荐改用for...of循环实现,匹配到目标后可以直接中断遍历,性能更优:
const recursiveSearch = (object, target) => { // 根节点匹配直接返回 if (object.id === target) return object; let result; if (object.responses.length > 0) { for (const response of object.responses) { // 当前层级匹配 if (response.id === target) { result = response; break; } // 有子回复则递归查找,接收返回值 if (response.responses.length > 0) { const deepMatch = recursiveSearch(response, target); if (deepMatch) { result = deepMatch; break; } } } } return result; }
内容的提问来源于stack exchange,提问作者LeoM
相关产品推荐
相关产品推荐

