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

JavaScript数组对象解构 拆分多字段对象为单月条目问题

问题根因

你的代码存在3个问题:

  • 入参不匹配:你传入的obj是对象数组,但函数fn的入参设计为接收单个对象做解构,直接传数组无法正确遍历所有原始条目
  • 字段丢失:使用Object.values(rest)仅获取了月份对应的数值,丢失了Jan/Feb/Mrz这类月份键名,最终输出的字段固定为Month,不符合预期结构
  • 语法错误:函数定义末尾多写了一个多余的}),会直接触发语法报错,无法正常运行
可运行的正确实现
// 原始数据源
const rawData = [
  {
    "Area": "Werk Produktivität [%] - Target",
    "Jan": 86.21397507374327,
    "Feb": 86.0570021973368,
    "Mrz": 88.70898346258058,
    "Apr": 85.29801908413164,
    "May": 85.07431241640211
  },
  {
    "Area": "Werk Produktivität [%] - Actual",
    "Jan": 84.17054711398421,
    "Feb": 83.80826026601528,
    "Mrz": 84.11553769971036,
    "Apr": 83.76460916731,
    "May": 82.69773876702813
  }
]

const formatData = (dataList) => {
  // flatMap遍历原始数组,同时将处理后的二级数组拍平为一维
  return dataList.flatMap(item => {
    const { Area, ...monthMap } = item
    // 同时遍历月份的键和值,动态生成对应字段
    return Object.entries(monthMap).map(([month, value]) => ({
      Area,
      [month]: value
    }))
  })
}

// 得到最终结果
const result = formatData(rawData)
实现逻辑说明
  • 用flatMap替代普通map,避免处理完单条Area数据后生成嵌套数组,直接输出你需要的一维数组结构
  • 解构单条数据时,分离固定的Area字段和存储各月份数据的剩余对象
  • 用Object.entries替代Object.values,同时拿到月份名称和对应数值,通过ES6计算属性语法[month]动态生成月份字段,完全匹配目标格式
  • 运行后最终输出长度为10的数组,结构和你给出的示例完全一致

内容的提问来源于stack exchange,提问作者Mr-Robot

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 09:57:31