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

如何将每周角色工时对象转换为指定结构多维数组 缺失值补0

可行实现代码

function createDataFrame(data) {
  // 提取所有周次,固定列顺序
  const weekList = Object.keys(data)
  // 初始化表头
  const result = [['Role', ...weekList]]

  // 收集所有出现过的角色(自动去重)
  const roleSet = new Set()
  weekList.forEach(week => {
    Object.keys(data[week]).forEach(role => roleSet.add(role))
  })

  // 遍历每个角色生成行数据,缺失周次自动补0
  Array.from(roleSet).forEach(role => {
    const row = [role]
    weekList.forEach(week => {
      row.push(data[week][role] ?? 0)
    })
    result.push(row)
  })

  return result
}

逻辑说明

你之前的代码问题出在遍历周次时直接插入角色行,会导致同一个角色重复生成多行,且先插入的行没有后续周次的数值,自然无法对应列顺序。正确的处理流程如下:

  1. 先把所有周次全部提取出来作为固定列顺序,保证后续每个角色的数值位置和表头严格对应
  2. 遍历所有周次的角色数据,收集全部出现过的角色并去重,确定最终需要生成的行数
  3. 每个角色逐行生成时,按之前确定的周次顺序依次匹配工时,没有对应数据就填0,完全避免索引错位问题

如果需要兼容不支持空值合并运算符(??)的旧环境,把data[week][role] ?? 0替换为data[week][role] || 0即可,工时时长为正数,不会出现逻辑歧义。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:36:04