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

如何将JavaScript嵌套Object转换为指定格式的简单Array数组

最优实现方案

这个场景适合用flatMap处理嵌套数组的展开转换,实现代码如下:

const transform = (data) => {
  return data.model_A.flatMap(article => {
    // 提取前三个公共字段
    const commonFields = [
      article.col_1,
      article.col_2,
      article.model_B.col_3
    ]
    // 存在标签数组时按标签数量生成对应行数
    if (Array.isArray(article.model_C) && article.model_C.length > 0) {
      return article.model_C.map(tag => [
        ...commonFields,
        tag.col_4,
        tag.col_5
      ])
    }
    // 无标签时生成默认空值行
    return [[...commonFields, '', '']]
  })
}

// 调用方式
const expectedData = transform(data)

方案优势

  • 时间复杂度为O(N),仅遍历所有有效数据一次,性能最优
  • 逻辑分层清晰,公共字段提取和标签分支处理分离,后续字段调整维护成本低
  • 兼容边界场景:如果model_C不存在、为空数组时,会自动填充空字符串,符合输出要求
  • 代码语义化强,flatMap天生适配「一个输入项对应多个输出项」的转换场景,比手动拼接数组的写法可读性更高

旧环境兼容方案

如果需要兼容不支持flatMap的低版本JS环境,可以替换为map + concat的写法:

const transform = (data) => {
  return [].concat(...data.model_A.map(article => {
    const commonFields = [article.col_1, article.col_2, article.model_B.col_3]
    if (Array.isArray(article.model_C) && article.model_C.length) {
      return article.model_C.map(tag => [...commonFields, tag.col_4, tag.col_5])
    }
    return [[...commonFields, '', '']]
  }))
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 19:45:03