【问题标题】:Typescript - Find enum by string IndexTypescript - 按字符串索引查找枚举
【发布时间】:2020-10-28 16:59:56
【问题描述】:

这看起来很简单,我只是缺少一些东西,但是我如何根据字符串索引返回正确的枚举?

枚举

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

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

我看过 Object.values 和 Object.keys 但不明白如何取回 Enum。

【问题讨论】:

标签: typescript


【解决方案1】:

handbook中所述:

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

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

您可以尝试一些自定义函数,如下所示:

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

【讨论】:

    【解决方案2】:

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

    [ ['English', 'en'], ['China', '0']['Nigeria', '1'], ['Kenya', '2'] ]

    如果你想获得肯尼亚,你可以过滤这个数组来搜索这个值,如下所示:

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

    这将返回肯尼亚

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多