Enum 是 typescript 中引入的一种新的数据类型。它的数据是一组常数。 对象中的数据是字符串和数字类型。enum
对象是键和值的属性用{}括起来,数组是用[]括起来的一组类型。
Enum和数组对象是不同的类型和结构,我们必须写一段代码来处理转换,以显示在UI元素的下拉菜单中。
我们有很多方法可以将Enum转换成数组对象 。
但我将使用ES8 Object. entries。
给出一个枚举声明
export enum Weeks {
MONDAY = 1,
TUESDAY= 2,
WEDNESDAY = 3,
THURSDAY = 4,
FRIDAY = 5,
SATURDAY=6,
SUNDAY=7,
}
这篇文章讲述了如何转换为对象数组,如下所示
[ { id: 1, name: 'MONDAY' }, { id: 2, name: 'TUESDAY' },
{ id: 3, name: 'WEDNESDAY' },
{ id: 4, name: 'THURSDAY' }, { id: 5, name: 'FRIDAY' },
{ id: 6, name: 'SATURDAY' }, { id: 7, name: 'SUNDAY' } ]
ES8 Object. entries in JavaScript
ES8 引入了 方法,该方法在最新的浏览器中工作, 需要在旧的浏览器中支持。
- 使用Object. entries()方法检索键和值。
- 使用for-of循环来迭代枚举数据的每个元素。
- 检查数字的键值,忽略字符串的id。
- 使用push方法将键和值的数组添加到新创建的数组中。
const arrayObjects = []
for (const [propertyKey, propertyValue] of Object.entries(Weeks)) {
if (!Number.isNaN(Number(propertyKey))) {
continue;
}
arrayObjects.push({ id: propertyValue, name: propertyKey });
}
console.log(arrayObjects);
总结
在这篇文章中,你通过一个例子学会了如何将Enum转换为一个typecript数组