打字稿-通过字符串索引查找枚举

时间:2020-10-28 08:43:41

标签: typescript

这似乎很简单,我只是想念一些东西,但是如何基于字符串Index返回正确的Enum?

枚举

export enum Locales {
    English = "en",
    China = "0",
    Nigeria = "1",
    Kenya = "2"
}

当我只有字符串“ 2”时,我只想返回Locale.Kenya

我看过Object.values和Object.keys,但不了解如何获取Enum。

2 个答案:

答案 0 :(得分:2)

handbook中所述:

请记住,字符串枚举成员根本不会生成反向映射。

这意味着您的情况没有简单的反向映射。

您可以尝试一些自定义功能,例如:

function getEnumKeyByEnumValue(myEnum,enumValue){ 让键= Object.keys(myEnum).filter(x => myEnum [x] == enumValue); 返回keys.length> 0? keys [0]:空; }

答案 1 :(得分:0)

您可以使用Object.entries(Locales)获得一个二维数组,该数组在深层中具有[Country,string]。这是一个示例:

[['英语','en'],['中国','0'] ['尼​​日利亚','1'],['肯尼亚','2']]

如果要获取肯尼亚,可以过滤此数组以搜索该值,如下所示:

Object.entries(Locales).find(local=>local[1]==='2')[0]

这将返回肯尼亚