Сопоставить свойство с соответствующим значением в другом свойстве - PullRequest
0 голосов
/ 27 мая 2019

У меня есть функция, которая получает LCID (идентификатор локали) от текущего пользователя. Я хочу сопоставить этот номер с соответствующим языком в другом свойстве. Например, я сначала извлекаю LCID из пользователя, скажем, «1043» для голландского. У меня есть свойство с «1043: голландский», и я хочу извлечь имя из этого свойства с идентификатором.

Мой код:

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, он вернет «голландский», а это не так.

Ответы [ 2 ]

0 голосов
/ 27 мая 2019
public static languages = {
    1033: 'English',
   .....etc
  };

, если приведенный выше код в формате localeId: имя языка.Вы можете получить доступ напрямую, как Языки [localeId]

0 голосов
/ 27 мая 2019

Просто используйте скобочные обозначения:

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);
...