如何用Array.reduce从深度嵌套对象数组提取问题编号
使用Array.reduce提取嵌套questionTree中的所有question_num
实现代码
function extractQuestionNums(questionTree) { return questionTree.reduce((nums, node) => { // 收集当前节点的question_num if (node.question_num) { nums.push(node.question_num); } // 递归处理嵌套的子节点数组(假设嵌套字段为children,可根据实际结构调整) if (node.children && Array.isArray(node.children)) { nums.push(...extractQuestionNums(node.children)); } return nums; }, []); }
逻辑说明
- 利用
Array.reduce初始化空数组作为累加器,用来存储所有提取到的question_num - 遍历每个节点时,先检查当前节点是否存在
question_num,存在则加入累加器 - 如果节点包含嵌套的子节点数组(比如示例中的
children),递归调用同一个函数处理子数组,并用扩展运算符将子数组的提取结果合并到当前累加器 - 最终返回的累加器就是所有
question_num组成的扁平数组
注意事项
如果你的questionTree中嵌套子节点的字段名不是children(比如subQuestions),只需要替换代码中对应的字段名即可,逻辑完全通用。
内容的提问来源于stack exchange,提问作者Muhammad Shahzad
相关产品推荐
相关产品推荐

