You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何递归查找深层嵌套数组中所有type等于question的对象

问题原因

你的代码存在两处核心错误:

  • 循环内遇到携带items属性的节点就直接return递归结果,直接终止了当前层级剩余元素的遍历,因此处理完标题为2的section之后,不会再继续处理标题为3的section
  • 入参中item参数逻辑冗余,没有实际作用
修正后的代码
export const findQuestions = (items) => {
  const questions = [];
  for (const item of items) {
    if (item.type === 'question') {
      // 如果只需要title字段,可改为 questions.push({title: item.title})
      questions.push(item);
    }
    // 存在子项则递归遍历,合并子项返回的结果
    if (Object.prototype.hasOwnProperty.call(item, 'items')) {
      questions.push(...findQuestions(item.items));
    }
  }
  return questions;
};

如果你的运行环境支持可选链操作符,判断子项的逻辑可以简化为:

if (item.items?.length) {
  questions.push(...findQuestions(item.items));
}
调用方式

原有调用逻辑无需修改:

const questions = findQuestions([this.lastPage]);

内容的提问来源于stack exchange,提问作者Bruno Francisco

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:06:01