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

如何将嵌套结构对象数组合并转换为单层扁平对象数组

数组结构转换实现方案

核心逻辑是遍历外层每个带labNumber的对象,将外层的labNumber字段和内层sampleRepeats数组中的每一项合并为新对象,最终收集所有新对象得到要求的单层数组。

推荐写法(ES2019+ 原生支持)

直接用数组的flatMap方法实现,代码最简洁,执行效率高:

// 替换成你的实际数据源即可
const originList = [
  {
    "labNumber": 1,
    "sampleRepeats": [
      {"lab": "CORE","reason": "Equipment failure","count": 1}
    ]
  },
  {
    "labNumber": 2,
    "sampleRepeats": [
      {"lab": "CORE","reason": "Tecan150 failed","count": 2}
    ]
  }
]

const flatList = originList.flatMap(labItem => 
  labItem.sampleRepeats.map(repeatItem => ({
    labNumber: labItem.labNumber,
    ...repeatItem
  }))
)

flatMap会自动将内部遍历返回的二维数组拍平为一维,不需要额外做扁平化操作。

兼容旧环境写法

如果运行环境不支持flatMap,可以用reduce配合循环实现,逻辑完全一致:

const flatList = originList.reduce((result, labItem) => {
  labItem.sampleRepeats.forEach(repeatItem => {
    result.push({
      labNumber: labItem.labNumber,
      ...repeatItem
    })
  })
  return result
}, [])

注意:以上两种写法都不会修改原始数组的数据,如果某条外层数据的sampleRepeats为空数组,会自动跳过,不会生成无效的空对象项。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.02 08:39:29