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

如何基于另一字典的键值对更新目标字典的键

字典转换实现方案

需求说明

给定两个JavaScript字典,需要按照指定规则转换得到新字典:

输入字典1(dict1)

var dict1= { 'Pname1-type1-UOM1': 'D43',
  'Pname1-type2-UOM1': 'D59',
  'Pname1-type3-UOM2': 'D75',
  'Pname1-type4-UOM2': 'D91'
}

输入字典2(dict2)

var dict2= { 'F43': 'Yearly',
  'F59': 'Monthly',
  'F75': 'Quarterly',
  'F91': 'Monthly'
}

期望输出字典

{ 'Pname1-type1-Yearly-UOM1': 'D43',
  'Pname1-type2-Monthly-UOM1': 'D59',
  'Pname1-type3-Quarterly-UOM2': 'D75',
  'Pname1-type4-Monthly-UOM2': 'D91'
}

关联规则

  • dict1的值(如D43)对应dict2的键:仅将首字母D替换为F,数字部分保持一致(即D43对应F43)
  • 取出dict2中对应键的值(如Yearly),替换dict1原键中的类型部分(如type1),生成新键;dict1的原值保持不变

实现代码(JavaScript)

核心逻辑是遍历dict1的键值对,按规则替换生成新键,最终构建目标字典:

var dict1= { 'Pname1-type1-UOM1': 'D43',
  'Pname1-type2-UOM1': 'D59',
  'Pname1-type3-UOM2': 'D75',
  'Pname1-type4-UOM2': 'D91'
};

var dict2= { 'F43': 'Yearly',
  'F59': 'Monthly',
  'F75': 'Quarterly',
  'F91': 'Monthly'
};

const result = {};

// 遍历dict1的所有键值对
for (const [key, value] of Object.entries(dict1)) {
  // 拆分原键为前缀、类型、后缀三部分
  const [prefix, , suffix] = key.split('-');
  // 转换dict1的值为dict2的匹配键(D替换为F)
  const dict2Key = 'F' + value.slice(1);
  // 获取对应的周期文本
  const period = dict2[dict2Key];
  // 拼接生成新键
  const newKey = `${prefix}-${period}-${suffix}`;
  // 存入结果字典
  result[newKey] = value;
}

console.log(result);

代码说明

  • Object.entries(dict1):将字典转为键值对数组,方便同时获取键和值
  • key.split('-'):将原键按-分割,通过解构直接获取前缀和后缀,跳过中间的类型字段
  • value.slice(1):提取D43中的数字部分43,拼接F得到dict2的匹配键
  • 最后将前缀、周期文本、后缀拼接成新键,绑定原字典的值,完成转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 16:00:58