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

如何提取嵌套JSON的特定值,将所有items汇总为扁平数组?

实现方案

直接用flatMap结合递归即可,代码简洁且符合你要的用高阶函数的要求:

const parse = (node) => {
  // 提取当前节点的items,不存在则返回空数组
  const currentItems = node.items ?? []
  // 收集所有子节点,兼容你示例中同时存在的children数组、单个child两种格式
  const allChildren = [
    ...(node.children ?? []),
    ...(node.child ? [node.child] : [])
  ]
  // 递归处理所有子节点,合并成一维数组返回
  return [...currentItems, ...allChildren.flatMap(parse)]
}

代码说明

  1. 用空值合并运算符??处理items、children不存在的场景,省去冗余的if判断
  2. flatMap本身是「遍历映射+自动扁平化一层」的组合,刚好匹配递归返回的数组结构,无需额外调用扁平化方法
  3. 如果你实际业务结构里只有children数组没有单个child属性,直接删掉收集child的那一行即可
  4. 如果需要兼容低版本运行环境,把allChildren.flatMap(parse)替换为allChildren.map(parse).flat(Infinity),效果完全一致

测试效果

把你给出的JSON补全后调用parse(json),直接返回["l1","l2","l3","l4"],和你要求的目标结果完全匹配。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 23:24:02