将枚举数转换为字符串

时间:2018-09-17 08:39:02

标签: javascript typescript enums

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

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

现在,当我从数据库中接收数据作为数组时,我还收到了PaypingType作为数字:

 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" }
        ];

1 个答案:

答案 0 :(得分:0)

您可以使用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);

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

相关问题