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

如何从嵌套结构的JS数组中提取所有id值并生成新的一维数组?

解决方案

你可以使用flatMap替代普通map实现数组自动降维,同时直接提取id字段,示例代码如下:

const allActivityIds = activities.flatMap(activity => 
  activity.options.flatMap(opt => 
    opt.activities.map(act => act.id)
  )
)

flatMap的作用是执行map后自动将返回的数组展开一层,不会产生嵌套结构,最终得到的就是所有id组成的一维数组。

如果你的运行环境不支持flatMap,也可以搭配flat方法手动打平嵌套:

const allActivityIds = activities
  .map(activity => activity.options.map(opt => opt.activities.map(act => act.id)))
  .flat(Infinity)

其中Infinity参数代表将所有层级的嵌套数组全部打平,你也可以根据实际嵌套层数填写具体数字(比如当前结构嵌套3层就填3)。

如果你的嵌套结构是更深的递归结构(即activities内部还可能嵌套options和activities),可以使用递归函数实现通用提取:

function collectActivityIds(arr) {
  const ids = []
  arr.forEach(item => {
    if (item.id) ids.push(item.id)
    if (Array.isArray(item.options)) {
      ids.push(...collectActivityIds(item.options.flatMap(opt => opt.activities || [])))
    }
    if (Array.isArray(item.activities)) {
      ids.push(...collectActivityIds(item.activities))
    }
  })
  return ids
}

// 调用方法
const allActivityIds = collectActivityIds(activities)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 19:18:03