Javascript 短属性名和长属性名之间的映射

Javascript 短属性名和长属性名之间的映射,javascript,properties,Javascript,Properties,我的web服务返回具有单字母属性名称的对象。因为我想在JavaScript代码中使用可读属性,所以我通常会执行以下类似过程: $.getJSON('bla').done(res => { myResult = { hello: res.h, world: res.w }; }); 或 另一个问题是,当我想将该对象回调到服务器时,我必须以相反的方式重复该过程 因此,我的问题是,是否存在某种简化的双向映射器方法,或类似于隐式强制转换操作符的方法。这里有一个选项,使用两

我的web服务返回具有单字母属性名称的对象。因为我想在JavaScript代码中使用可读属性,所以我通常会执行以下类似过程:

$.getJSON('bla').done(res => {
  myResult = {
    hello: res.h,
    world: res.w
  };
});

另一个问题是,当我想将该对象回调到服务器时,我必须以相反的方式重复该过程


因此,我的问题是,是否存在某种简化的双向映射器方法,或类似于隐式强制转换操作符的方法。

这里有一个选项,使用两个相互映射的键数组和一个辅助函数,将具有其中一个键集的对象转换为具有另一个键集的对象:

const transformObj=obj,from,to=>Object.fromEntries from.mapfromKey,i=>[to[i],obj[fromKey]] ; 常量short=['a','b','c']; const long=['aaa','bbb','ccc']; console.logtransformObj{a'foo',b'bar',c'baz'},短,长;
console.logtransformObj{aaa:'zzz',bbb:'yyy',ccc:'xxx'},长,短@mplungjan你能给我举个例子吗?为什么不修复你的web服务,使用有意义的属性名呢?根据你的代码,我想你应该看看:@Andreas谢谢你的提示。我只是举了个小例子。我知道,这段代码在现实环境中毫无意义。另外,对于最后一个语句,我使用的是外部后端,因此我无法修改它。我看得对吗,这个解决方案依赖于一致的属性顺序?@AndréReichet no。重要的是from的第I个值与to的第I个值匹配。不过,在ES2015+环境中,属性顺序将与阵列中的属性顺序偶然匹配
$.getJSON('bla').done(res => {
  res.hello = res.h; delete res.h;
  res.world = res.w; delete res.w;
  myResult = res;
});