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

JavaScript中是否有可用于映射嵌套数组的库或简便方法?

注意:不要使用Array作为变量名,会覆盖JS原生的Array构造器,容易引发未知错误,建议修改为carList这类语义化命名。

场景1:提取所有model为一维数组(最常用)

你原有的两层map写法会返回三层嵌套数组,不符合绝大多数使用场景。最优解是使用ES2019新增的flatMap方法,一次完成映射+单层扁平化,性能优于map后单独调用flat:

const allModels = carList.flatMap(car => car.cars.flatMap(brand => brand.models))

执行后直接得到一维数组:["Verna", "Aura", "Azera", "Accent", "Sonata", ...]

场景2:保留层级结构,按品牌分组存储model列表

如果不需要平铺数据,要保留品牌和对应model的关联关系,可采用map结合解构的写法,可读性更高:

const brandModels = carList.map(car => ({
  category: car.name,
  brandList: car.cars.map(brand => ({
    brandName: brand.name,
    models: brand.models
  }))
}))

低版本环境兼容方案

如果运行环境不支持flatMap,可采用reduce实现同等效果,时间复杂度同为O(n)(n为所有model总数量),性能优秀:

const allModels = carList.reduce((res, car) => {
  car.cars.forEach(brand => res.push(...brand.models))
  return res
}, [])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 20:57:03