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

如何编写JavaScript函数实现文档数据按后缀编号分组转换?

问题:按realName后缀编号分组转换数组格式

需求说明

需要编写JavaScript函数,将指定REQUEST格式的数组数据转换为RESPONSE格式的数组,核心规则是把realName后缀编号相同的文档对象归到同一个响应对象中。

REQUEST示例

[
  {
    "realName": "OnlineOrderDoc-1",
    "preparedBy": "Jack"
  },
  {
    "realName": "GroceryBillDoc-2",
    "preparedBy": "Jill"
  },
  {
    "realName": "makingChargeDoc-2",
    "preparedBy": "John"
  },
  {
    "realName": "GroceryBillDoc-3",
    "preparedBy": "Sam"
  },
  {
    "realName": "makingChargeDoc-3",
    "preparedBy": "Bill"
  }
]

RESPONSE示例

[
  {
      "OnlineOrderDoc": {
        "preparedBy": "Jack"
      }
  },
  {
      "GroceryBillDoc": {
          "preparedBy": "Jill"
      },
      "makingChargeDoc": {
          "preparedBy": "John"
      }
  },
  {
      "GroceryBillDoc": {
          "preparedBy": "Sam"
      },
      "makingChargeDoc": {
          "preparedBy": "Bill"
      }
  }
]

你的代码问题排查

你尝试用Map实现,但代码存在多处逻辑错误,导致无法正常运行:

  • 变量名错误:使用了未定义的name、filename变量,正确的应该是newName和包含preparedBy的对象
  • 分组依据错误:你用文档名(newName)作为Map的key,但需求是按后缀编号分组,应该用numberFromName作为key
  • 结构赋值错误:更新Map值时的对象合并逻辑混乱,没有正确构建目标结构

可行解决方案

正确思路是用后缀编号作为Map的key,存储对应编号下的所有文档对象,最后将Map的值转为数组即可:

const transformRequest = (request) => {
  // 用Map存储编号对应的文档集合,key是后缀编号,value是该编号下的文档对象
  const groupMap = new Map();

  request.forEach(item => {
    // 拆分realName得到文档名和后缀编号
    const [docName, number] = item.realName.split('-');
    // 从Map中获取当前编号对应的文档集合,不存在则创建空对象
    const currentGroup = groupMap.get(number) || {};
    // 将当前文档信息添加到集合中
    currentGroup[docName] = { preparedBy: item.preparedBy };
    // 更新Map中的对应项
    groupMap.set(number, currentGroup);
  });

  // 将Map的value转为数组,就是目标格式
  return Array.from(groupMap.values());
}

代码说明

  1. 遍历原数组时,拆分每个元素的realName得到文档名和后缀编号
  2. 以编号为key在Map中查找对应的分组对象,不存在则初始化空对象
  3. 把当前文档的preparedBy信息添加到分组对象中,键为文档名
  4. 最后将Map中存储的所有分组对象转为数组,得到最终结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 22:30:33