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

如何将JS serializeArray函数返回结果转换为单一数组?

把serializeArray结果转换为结构化对象数组

嘿,我来帮你搞定这个问题!serializeArray() 返回的这种包含 name 和 value 的扁平数组,本质是表单字段的平铺结构,我们只需要解析 name 属性里的路径规则,就能把它们组装成更易用的单一结构化对象数组。

实现思路

核心逻辑是拆解每个项的 name 字符串:提取出模板的索引(比如 [1] 里的数字1)和对应的字段名(比如 maintenance_problem_id),然后把同一索引下的所有字段合并到同一个对象中,最后将这些对象整理成数组即可。

具体代码实现

function transformSerializedData(serializedArray) {
  const templateMap = {};

  serializedArray.forEach(item => {
    // 用正则匹配name中的模板索引和字段名,适配你给出的格式
    const regexMatch = item.name.match(/sub_maintenance_template\[(\d+)\]\[(\w+)\]/);
    if (!regexMatch) return; // 如果格式不匹配,直接跳过该项

    const [, templateIndex, fieldName] = regexMatch;
    // 若当前索引的模板对象不存在,先初始化空对象
    if (!templateMap[templateIndex]) {
      templateMap[templateIndex] = {};
    }
    // 赋值到对应字段,还可以按需做类型转换(比如把ID、天数转成数字)
    templateMap[templateIndex][fieldName] = item.value;
    // 示例:针对数值型字段做转换的代码
    // if (fieldName.endsWith('id') || fieldName === 'days_to_complete') {
    //   templateMap[templateIndex][fieldName] = parseInt(item.value, 10);
    // } else {
    //   templateMap[templateIndex][fieldName] = item.value;
    // }
  });

  // 将映射对象转换为数组,得到最终的单一结构化数组
  return Object.values(templateMap);
}

使用示例

假设你的 serializeArray() 返回数据如下:

const formData = [
  {name: "sub_maintenance_template[1][maintenance_problem_id]", value: "471354"},
  {name: "sub_maintenance_template[1][maintenance_location_id]", value: "38565"},
  {name: "sub_maintenance_template[1][maintenance_priority_id]", value: "24879"},
  {name: "sub_maintenance_template[1][days_to_complete]", value: "2"},
  {name: "sub_maintenance_template[1][description]", value: "fff"}
];

const transformedArray = transformSerializedData(formData);
console.log(transformedArray);

输出结果

[
  {
    maintenance_problem_id: "471354",
    maintenance_location_id: "38565",
    maintenance_priority_id: "24879",
    days_to_complete: "2",
    description: "fff"
  }
]

如果你的表单里有多个模板(比如sub_maintenance_template[2][...]这类项),这个函数会自动把不同索引的模板分成数组中的独立元素,完美适配多模板场景。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 09:10:10