在另一个属性中映射具有相应值的属性

时间:2019-05-27 13:09:39

标签: javascript reactjs typescript object ecmascript-6

我有一个从当前用户那里获取LCID(语言环境ID)的函数。我想将此数字与另一个属性中的对应语言进行映射。例如,我首先从用户中提取LCID,对于荷兰语来说是“ 1043”。我有一个带有“ 1043:Dutch”的属性,我想从该属性中提取具有ID的名称。

我的代码:

export class Languages {
  public static languages = {
    1033: 'English',
    1035: 'Finnish',
    1036: 'French',
    1037: 'Hebrew',
    1038: 'Hungarian',
    1040: 'Italian',
    1041: 'Japanese',
    1042: 'Korean',
    1043: 'Dutch',
    1044: 'Norwegian',
    1045: 'Polish',
  };
}

localeId = applicationContext.pageContext.legacyPageContext.currentLanguage; //get the LCID
}

let language: any;

const pos: number = Object.keys(Languages.languages).indexOf(localeId.toString());
//WRONG BELOW
if (pos > -1) {

  let languageObject = Object.keys(Languages.languages).map(e => Languages.languages[pos]);
  language = languageObject;

  //WRONG UP
}

return language; //Should return the correct NAME of the languages via the ID
}

请参阅我写的代码“下面有错”。它没有返回正确的值。例如,如果localeId为1043,则它将返回“ Dutch”,但不是。

2 个答案:

答案 0 :(得分:0)

只需使用括号符号:

const languages = {1033:'English',1035:'Finnish',1036:'French',1037:'Hebrew',1038:'Hungarian',1040:'Italian',1041:'Japanese',1042:'Korean',1043:'Dutch',1044:'Norwegian',1045:'Polish'};
const id = 1036;
const language = languages[id];
console.log(language);

答案 1 :(得分:0)

public static languages = {
    1033: 'English',
   .....etc
  };

如果以上代码采用localeId的格式:语言名称。 您可以直接访问,例如Languages [localeId]