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

Angular12中将文件上传返回数组转换为API要求JSON对象的实现方法

实现代码

你之前的代码错误点是每次循环都创建独立的外层对象,没有对相同id+name的项做聚合,以下是兼容多组id+name聚合的通用实现:

// sourceArray 为你文件上传返回的原始数组
// dateParam 为你自定义的日期参数
const groupMap = new Map<string, any>();

sourceArray.forEach(item => {
  // 用id和name拼接唯一分组标识
  const groupKey = `${item.id}-${item.name}`;
  // 分组不存在则初始化结构
  if (!groupMap.has(groupKey)) {
    groupMap.set(groupKey, {
      id: item.id,
      name: item.name,
      array1: [{
        date: dateParam,
        endDate: '',
        lastUpdatedBy: 'me',
        array2: []
      }]
    });
  }
  // 向对应分组的array2追加当前项的职业和偏好数据
  groupMap.get(groupKey).array1[0].array2.push({
    job: item.job,
    preference: item.preference
  });
});

// 最终需要传给后端的结果
const finalData = Array.from(groupMap.values());

如果你的业务场景中可以确定所有原始数据的id和name完全一致,也可以用简化写法:

if (!sourceArray.length) {
  const finalData = [];
} else {
  const baseInfo = sourceArray[0];
  const finalData = [{
    id: baseInfo.id,
    name: baseInfo.name,
    array1: [{
      date: dateParam,
      endDate: '',
      lastUpdatedBy: 'me',
      array2: sourceArray.map(item => ({
        job: item.job,
        preference: item.preference
      }))
    }]
  }];
}

两种写法都可以直接在Angular 12的TS文件中运行,输出的结构完全符合你给的后端要求格式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:36:07