JavaScript:将对象属性中的每个单词缩短为固定长度?

标签 javascript

有没有像这样的对象:

 {
   "computer_general_last_contact_time_epoch": 1566522907515,
   "computer_general_last_contact_time_utc": "2019-08-23T01:15:07.515+0000",
   "computer_general_initial_entry_date": "2018-08-18",
 }

并使每个属性名称更短,以便将对象键的每个单词更好的_字符缩短为固定的字符长度。因此,例如,缩短为 3 个字符的固定长度会产生:

{
   "com_gen_las_con_tim_epo": 1566522907515,
   "com_gen_las_con_tim_utc": "2019-08-23T01:15:07.515+0000",
   "com_gen_ini_ent_dat": "2018-08-18",
}

我必须创建一个新对象吗?遍历当前对象中的每个对象,使用正则表达式删除所有“_”,然后缩短每个单词,然后将它们全部添加到中间?我对此非常迷茫,因为我有 100 个属性的对象,我需要缩短这些属性以进行集成,任何建议都会有所帮助!

最佳答案

一个简单的解决方案是迭代输入对象的每个键,并对每个键执行以下操作以计算要将值传输到的新键:

  1. 用“_”分割键,从键中获取单词
  2. 将每个单词缩减为 3 个字母
  3. 将裁剪后的词与“_”拼接得到新的key

在代码中这可以表示为:

let obj =  {
   "computer_general_last_contact_time_epoch": 1566522907515,
   "computer_general_last_contact_time_utc": "2019-08-23T01:15:07.515+0000",
   "computer_general_initial_entry_date": "2018-08-18",
 };
 
 const newObj = {};
 
/* Iterate keys in obj */
for(let key in obj){
  
  /* Create new key, split key by _ to extract words, trim each word to three
  letters, join trimmed words by _ again to obtain new key */
  const newKey = key.split("_").map(word => word.substr(0, 3)).join("_");

  /* Apply key value from obj to new obj with new key */
  newObj[newKey] = obj[key];
}

console.log(newObj);

关于JavaScript:将对象属性中的每个单词缩短为固定长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57718088/

相关文章:

javascript - 如何摆脱添加到字符串开头的随机 "%3"

javascript - 正则表达式检查大写字母或小写字母(如果@在开头使用)

javascript - 使用折线图 d3 中的下拉菜单重新缩放 x 轴

javascript - 使用 jQuery 查找 td 和 div 之间的选定值

javascript - 没有关键帧但有过渡的动画怎么做

javascript - 网络包 4 : generating a shared dependency

javascript - 在 Node request() 中推送到数组

javascript - 输出所选按钮值或名称

javascript - 获取页面上的所有元素并在过滤器上隐藏它们

javascript - Jquery 无法访问 Ajax 创建的元素