将枚举数转换为字符串 [重复]

Posted

技术标签:

【中文标题】将枚举数转换为字符串 [重复]【英文标题】:Convert Enum Number To String [duplicate] 【发布时间】:2019-02-21 03:28:26 【问题描述】:

我有一个枚举文件,其中我为 PaymentTypes 定义了一个对象:

export enum PaymentTypes 
   Invoice = 1,
   CreditCard = 2,
   PrePayment = 3,

现在,当我从我的数据库中以数组的形式接收数据时,我还会以数字形式接收 PaymentType:

 order:
    [
         "id": 0, "name": "Available", "PaymentType": 1 ,
         "id": 1, "name": "Ready", "PaymentType": 3 ,
         "id": 2, "name": "Started", "PaymentType": 2 
    ];

现在我的问题是,如何过滤掉数组中的每种支付类型,并将数字转换为枚举文件中定义的字符串,以便我可以使用这些数据将其显示给前端的用户?

所以我有这样的东西可以使用:

orderFiltered:
        [
             "id": 0, "name": "Available", "PaymentType": "Invoice" ,
             "id": 1, "name": "Ready", "PaymentType": "PrePayment" ,
             "id": 2, "name": "Started", "PaymentType": "CreditCard" 
        ];

【问题讨论】:

就像PaymentTypes[1]一样简单 【参考方案1】:

您可以使用map 创建一个新的对象数组,其中包含原始数据和枚举成员的名称,您可以使用PaymentTypes[PaymentType] 获取这些对象

let order = [
     "id": 0, "name": "Available", "PaymentType": 1 ,
     "id": 1, "name": "Ready", "PaymentType": 3 ,
     "id": 2, "name": "Started", "PaymentType": 2 
];

enum PaymentTypes 
   Invoice = 1,
   CreditCard = 2,
   PrePayment = 3,

let orderFiltered = order.map(o => Object.assign(, o,  PaymentTypeDisplayName: PaymentTypes[o.PaymentType] ));
console.log(orderFiltered);

但需要注意的一点是,使用枚举成员名称作为显示可能不是最友好的使用体验。

【讨论】:

以上是关于将枚举数转换为字符串 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

将 Typescript 枚举从字符串转换为数字(角度)[重复]

将字符串转换为枚举[重复]

将字符串转换为枚举? [复制]

如何将字符串转换为枚举值到整数? [复制]

Django/Python:如何将整数转换为等效的枚举字符串? [复制]

Django/Python:如何将整数转换为等效的枚举字符串? [复制]