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

如何将表单专用扁平数据结构转换为嵌套数据结构?

如何将扁平表单数据转换为API要求的嵌套结构?

给定以下扁平的用户输入数据:

const formData = {
  state: "California",
  city: "New York",
  full_name: "rererer",
  email: "eee@gg.com",
  dob: "1/1/2014",
  pincode: "222222",
  gender: "male",
};

需要将其转换为服务器API要求的嵌套结构,其中Address包含state、city、full_name,Profile包含email、dob、pincode、gender,最终结构如下:

{
  Address: {
    state: "California",
    city: "New York",
    full_name: "rererer",
  },
  Profile: {
    email: "eee@gg.com",
    dob: "1/1/2014",
    pincode: "222222",
    gender: "male",
  },
}

下面提供几种实用的实现方式:

方法1:手动构建嵌套对象

这种方式直接明了,适合字段数量少且固定的场景:

const apiData = {
  Address: {
    state: formData.state,
    city: formData.city,
    full_name: formData.full_name
  },
  Profile: {
    email: formData.email,
    dob: formData.dob,
    pincode: formData.pincode,
    gender: formData.gender
  }
};

方法2:解构赋值简化代码

利用ES6解构赋值语法,让代码更简洁:

// 先从扁平数据中解构出需要的字段
const { state, city, full_name, email, dob, pincode, gender } = formData;

// 直接构建嵌套结构
const apiData = {
  Address: { state, city, full_name },
  Profile: { email, dob, pincode, gender }
};

方法3:动态映射配置(扩展性更强)

如果后续字段可能变动,或者需要处理大量字段,可以用映射表来统一管理,方便维护:

// 定义字段与嵌套对象的映射关系
const fieldMapping = {
  Address: ['state', 'city', 'full_name'],
  Profile: ['email', 'dob', 'pincode', 'gender']
};

const apiData = {};

// 遍历映射表生成嵌套结构
Object.entries(fieldMapping).forEach(([group, fields]) => {
  apiData[group] = fields.reduce((obj, field) => {
    obj[field] = formData[field];
    return obj;
  }, {});
});

以上三种方法都能实现需求,你可以根据实际场景选择最适合的方式。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 12:03:33