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

如何使用高阶函数(HOF)提取嵌套数组/对象中的居民姓名

你当前的代码返回的是每个物种的residents数组组成的二维数组,所以无法直接获取到所有居民的姓名,你可以通过以下两种高阶函数组合的方式实现需求:

方案1:使用flatMap高阶函数(推荐)

flatMap本质是map操作+深度为1的数组拍平操作,可以直接输出一维的姓名集合,代码最简洁:

const residentNames = species.flatMap(specie => 
  specie.residents.map(resident => resident.name)
)

执行后直接返回所有居民姓名组成的一维数组,示例中的狮子数据会返回['Zena', ...其余居民姓名]格式的结果。

方案2:使用reduce实现兼容写法

如果运行环境不支持ES2019新增的flatMap,可以用兼容性更强的reduce实现相同效果:

const residentNames = species.reduce((result, currentSpecie) => {
  const currentNames = currentSpecie.residents.map(res => res.name)
  return result.concat(currentNames)
}, [])
  • 兼容提示:如果部分物种可能不存在residents字段,可以添加可选链?.做防御性处理避免报错,写法为:specie.residents?.map(resident => resident.name) ?? []

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 18:36:04