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

Angular嵌套对象与数组格式转换问题求助

Angular表单数据转换解决方案

需求分析

需要将提交给服务器的JSON数据做结构调整:

  • 保留BioData原结构不变
  • 将locationData从嵌套对象改为直接承载地址数组,同时把每个地址项里ContactData下的contactList提至当前层级,移除ContactData嵌套

转换实现(TypeScript)

function transformFormData(sourceData: any): any {
  // 保留BioData原结构
  const transformedData = {
    BioData: { ...sourceData.BioData }
  };

  // 处理locationData结构
  if (sourceData.locationData?.locationList) {
    transformedData.locationData = sourceData.locationData.locationList.map(locationItem => {
      // 提取ContactData中的contactList,同时保留原地址字段
      const { ContactData, ...rest } = locationItem;
      return {
        ...rest,
        // 容错处理:如果ContactData或contactList不存在,默认空数组
        contactList: ContactData?.contactList || []
      };
    });
  } else {
    // 容错:如果原数据无locationList,设为空数组
    transformedData.locationData = [];
  }

  return transformedData;
}

使用示例

// 你的源数据
const sourceData = {
  "BioData":{
    "firstname": "Greg",
    "lastName": "John"
  },
  "locationData":{
    "locationList":[
      // ... 你的地址数据
    ]
  }
};

// 转换后的数据
const formattedData = transformFormData(sourceData);
// 之后即可将formattedData提交给服务器

说明

  • 用map遍历地址数组,比forEach更适合生成新数组(无副作用)
  • 解构赋值{ ContactData, ...rest }快速分离需要提平的字段
  • 加入了可选链?.和默认值处理,避免因字段缺失导致报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 06:35:12