在本教程中,你将通过实例学习在typescript中把enum
到对象的array
、字符串的数组以及键和值对的数组的多种方法。
Typecript枚举
Enum
是typecript中引入的一种新的数据类型。它的数据是一组常量。 enum
对象中的数据是字符串或数字类型。
Object
{}
中包含了键和值的属性, array
中包含了[]的类型组。
因为Enum
和array
是不同类型的对象,结构数据,很明显,我们必须写一段代码来处理转换,以显示在UI元素的下拉菜单中。
让我们在typescript中声明并初始化enum
。
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' } ]
我们有很多方法可以将Enum转换为typecript中的对象数组。
如何使用ES8 Object. entries将Enum转换为对象数组?
在这个例子中,Enum的键和值被转换为一个对象键和值的数组。
ES8
介绍了 Object.entries()
方法,该方法在最新的浏览器中工作, polyfill
需要在旧的浏览器中支持。
Object. entries()方法通过遍历一个对象来返回键和值。
注意:
- 使用
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);
将枚举值转换为字符串数组
有时,我们需要将枚举值转换为数组,Object.values返回键和值,如下所示,枚举对象的命令。
console.log(Object.values(Weeks));
输出
["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY", 1, 2, 3, 4, 5, 6, 7]
另一种方法是用下面的代码将字符串拉入一个数组,用数组过滤器,只过滤字符串值。
const arrayValues = Object.values(Weeks).filter(value => typeof value === 'string')
console.log(arrayValues);
输出
["MONDAY", "TUESDAY", "WEDNESDAY", "THURSDAY", "FRIDAY", "SATURDAY", "SUNDAY"]
将枚举值转换为数组的键和值字符串
在这个例子中,使用for in loop
遍历了一个Enum
对象,构建了数组并推送了键和值,如下所述
let output = [];
for (let key in Weeks)
{
output.push({name: key, number:Weeks[key] });
}
console.log(res);
输出
[{ "name": "1", "number": "MONDAY"}, { "name": "2", "number": "TUESDAY"}, { "name": "3", "number": "WEDNESDAY"}, { "name": "4", "number": "THURSDAY"}, { "name": "5", "number": "FRIDAY"}, { "name": "6", "number": "SATURDAY"}, { "name": "7", "number": "SUNDAY"}, { "name": "MONDAY", "number": 1}, { "name": "TUESDAY", "number": 2}, { "name": "WEDNESDAY", "number": 3}, { "name": "THURSDAY", "number": 4}, { "name": "FRIDAY", "number": 5}, { "name": "SATURDAY", "number": 6}, { "name": "SUNDAY", "number": 7}]
总结
总结一下,你学到了如何将Enum转换为typecript数组对象的例子