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

如何根据自定义键拆分对象:按S-、FG-、SG-前缀分割为多对象

按自定义键前缀拆分对象为多结构的解决方案

需求说明

需要将包含S-、FG-、SG-前缀键的单个对象,拆分为包含student、firstGuardian、secondGuardian三个子对象的结构,每个子对象对应前缀匹配的键值对。

原始对象

const originalObj = {
    'S-First Name': 'Seif ',
    'S-Last Name': 'Ali',
    'S-Gender': 'Male',
    'S-Date Of Birth': new Date('2011-06-24T21:59:51.000Z'),
    'S-Nationality': 'Egyptian',
    'S-National ID': 21106250100531,
    'S-Grade': 'G5',
    'S-Class': 'B',
    'S-URL Photo': 'mb23thud',
    'FG-First Name': 'Ali',
    'FG-Last Name': 'Ahmed',
    'FG-Relation': 'FATHER',
    'FG-Gender': 'Male',
    'FG-Date Of Birth': new Date('1981-08-08T20:59:51.000Z'),
    'FG-Nationality': 'Egyptian',
    'FG-National ID': 28108090100531,
    'FG-Email': 'jojo@gmail.com',
    'FG-Phone Number': '00201016606666',
    'SG-First Name': 'Aya',
    'SG-Last Name': 'Adel',
    'SG-Relation': 'MOTHER',
    'SG-Gender': 'Female',
    'SG-Date Of Birth': new Date('1997-10-24T21:59:51.000Z'),
    'SG-Nationality': 'Egyptian',
    'SG-National ID': 29710250103561,
    'SG-Email': 'aya@gmail.com',
    'SG-Phone Number': '00201016605555'
};

实现代码(JavaScript)

// 定义前缀与目标子对象的映射关系
const prefixMap = {
    'S-': 'student',
    'FG-': 'firstGuardian',
    'SG-': 'secondGuardian'
};

// 初始化结果对象
const result = {
    student: {},
    firstGuardian: {},
    secondGuardian: {}
};

// 遍历原始对象的所有键值对
for (const [key, value] of Object.entries(originalObj)) {
    // 找到匹配的前缀
    const prefix = Object.keys(prefixMap).find(p => key.startsWith(p));
    if (prefix) {
        // 将键值对添加到对应的子对象中
        result[prefixMap[prefix]][key] = value;
    }
}

console.log(result);

关键说明

  1. 映射表设计:通过prefixMap明确前缀和目标子对象的对应关系,后续新增或修改前缀规则时,仅需调整映射表即可,扩展性强。
  2. 遍历匹配逻辑:用Object.entries遍历原始对象,通过startsWith判断键的前缀归属,精准将键值对分配到对应子对象。
  3. 纠正目标结构错误:你提供的目标结构存在两处问题:first guardian和secound guardian的命名不符合JS标识符规范(改为驼峰式firstGuardian/secondGuardian更合理),且first guardian错误包含SG-First Name键,上述代码会严格按前缀匹配拆分,避免这类失误。

最终输出结构

{
  student: {
    'S-First Name': 'Seif ',
    'S-Last Name': 'Ali',
    'S-Gender': 'Male',
    'S-Date Of Birth': 2011-06-24T21:59:51.000Z,
    'S-Nationality': 'Egyptian',
    'S-National ID': 21106250100531,
    'S-Grade': 'G5',
    'S-Class': 'B',
    'S-URL Photo': 'mb23thud'
  },
  firstGuardian: {
    'FG-First Name': 'Ali',
    'FG-Last Name': 'Ahmed',
    'FG-Relation': 'FATHER',
    'FG-Gender': 'Male',
    'FG-Date Of Birth': 1981-08-08T20:59:51.000Z,
    'FG-Nationality': 'Egyptian',
    'FG-National ID': 28108090100531,
    'FG-Email': 'jojo@gmail.com',
    'FG-Phone Number': '00201016606666'
  },
  secondGuardian: {
    'SG-First Name': 'Aya',
    'SG-Last Name': 'Adel',
    'SG-Relation': 'MOTHER',
    'SG-Gender': 'Female',
    'SG-Date Of Birth': 1997-10-24T21:59:51.000Z,
    'SG-Nationality': 'Egyptian',
    'SG-National ID': 29710250103561,
    'SG-Email': 'aya@gmail.com',
    'SG-Phone Number': '00201016605555'
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 15:15:01