You need to enable JavaScript to run this app. 调用外部JS文件findItem函数返回值为undefined问题求助
优惠活动
大模型
产品
解决方案
定价
更多

调用外部JS文件findItem函数返回值为undefined问题求助

问题原因

你的findItem递归函数没有正确返回嵌套层级的查找结果,具体问题出在递归调用的分支上:
当你调用findItem(result.children, id)递归查找子节点时,没有将这一步的返回值向上传递给外层调用,导致子层级匹配到目标对象后,返回值只会停留在对应的递归层级,最终最外层调用拿到的就是undefined。

修复后的findItem代码

export const findItem = (array, id) => {
  for (let i = 0; i < array.length; i += 1) {
    const result = array[i]
    if (result.id === id) {
      console.log('2', result)
      return result
    } 
    // 存在子节点的情况递归查找
    if (result.children) {
      const childMatch = findItem(result.children, id)
      // 子层级找到匹配项就直接向上返回
      if (childMatch) return childMatch
    }
  }
}

原代码执行逻辑说明

你之前的代码里,当目标对象在子节点层级时:

  1. 子层级的递归调用确实匹配到了目标,执行return result把结果返回给了上一层调用
  2. 但上一层调用没有接收并返回这个结果,函数会继续执行循环,最终循环结束后没有显式返回值,默认返回undefined,所以最外层拿到的就是undefined
  3. 你在子层级打印console.log('2', result)能正常输出,只是证明匹配逻辑没问题,但是返回值没有正确传递到最外层而已

内容的提问来源于stack exchange,提问作者NuoNuo LeRobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.11 05:24:00