如何基于另一字典的键值对更新目标字典的键
字典转换实现方案
需求说明
给定两个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
相关产品推荐
相关产品推荐

