在Typescript中,将枚举转换为数组对象的多种方法及实例

5,787 阅读2分钟

Typescript Convert Enum to Array

在本教程中,你将通过实例学习在typescript中把enum 到对象的array 、字符串的数组以及键和值对的数组的多种方法。

Typecript枚举

Enum 是typecript中引入的一种新的数据类型。它的数据是一组常量。 enum对象中的数据是字符串或数字类型。

Object {} 中包含了键和值的属性, array中包含了[]的类型组。

因为Enumarray 是不同类型的对象,结构数据,很明显,我们必须写一段代码来处理转换,以显示在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数组对象的例子