You need to enable JavaScript to run this app. JavaScript 如何提取嵌套对象公共属性作为键生成目标数组
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript 如何提取嵌套对象公共属性作为键生成目标数组

多语言字段结构的转换实现方案

核心逻辑

基于你提供的原始对象结构,要完成到目标data数组的格式化转换,最优实现采用字段维度单次遍历整合的思路,既保证转换效率最高,也能兼容后续多语言扩展的需求,整体无需引入第三方依赖。

可直接复用的实现代码

// 原始输入对象
const source = {
  field: {
    zh: { 
      game_code : "游戏", 
      transfer_amount : "金额", 
      uni_id : "流水号", 
      create_time : "建立时间"
    },
    en: { 
      game_code : "GameCode", 
      transfer_amount : "Amount", 
      uni_id : "UniqId.", 
      create_time : "CreateTime"
    }
  }
}

// 结构转换函数
const transformToData = (sourceObj) => {
  const { field } = sourceObj;
  // 提取所有支持的语言维度,如 ['zh', 'en']
  const supportedLangs = Object.keys(field);
  // 以第一个语言分支的字段列表为遍历基准(约定不同语言分支的字段完全对齐)
  const baseLangFields = Object.keys(field[supportedLangs[0]]);

  // 逐字段生成数组元素
  const data = baseLangFields.map(fieldKey => {
    // 为当前字段整合所有语言的对应翻译值
    const langValueMap = supportedLangs.reduce((map, lang) => {
      map[lang] = field[lang][fieldKey];
      return map;
    }, {});
    // 返回单字段结构的数组项
    return { [fieldKey]: langValueMap };
  });

  return data;
}

// 调用得到完全匹配目标结构的data数组
const data = transformToData(source);

方案优势

  • 性能最优:整体遍历次数与字段总数、语言总数线性相关,是这类双向结构转换的理论最低时间复杂度,无冗余的对象查找或循环操作
  • 低耦合易扩展:后续新增日语、韩语等其他语言时,仅需在原field对象下补充对应语言的字段映射块,转换逻辑无需修改
  • 容错能力强:可直接在语言值整合环节增加兜底逻辑,比如给缺失的翻译值加默认空串,适配不同语言分支字段不完全对齐的场景
  • 输出完全匹配要求:生成的data数组每一项都是独立的单字段对象,字段值直接挂载对应语言的翻译结果,和示例目标结构完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.08 06:45:03