在typescript中迭代枚举的最好的5种方法,并举例说明

650 阅读2分钟

枚举是一个名称和值的枚举,用一个命名空间取代多个常量。我们有很多方法可以遍历枚举数据。

这篇博文涵盖了使用不同的方法对Enum字符串或数字进行循环的例子。

使用对象内置的方法遍历键和值

一个枚举也是Javascript中的一个对象。Object 类提供了以下方法

  • Object.keys() 方法返回一个对象的键的数组。
  • Object.values() 方法返回一个对象的值或属性数组。
  • Object.entries() 方法返回一个枚举的Multimap ,它是在最新的Javascript语言中引入的。

让我们在javascript或typecript中声明Enum。

export enum Status {
    ACTIVE ="active",
    INACTIVE="inactive",
    PENDING ="pending",
    COMPLETED = "completed"

}

一个获取枚举对象键值的例子

const keys=Object.keys(Status);
console.log(keys)//[ 'ACTIVE', 'INACTIVE', 'PENDING', 'COMPLETED' ]

检索枚举对象的键的例子

const values=Object.values(Status);
console.log(values)//[ 'active', 'inactive', 'pending', 'completed' ]

迭代多个Map键和一个枚举的值

const entries=Object.entries(Status);
console.log(entries)

输出:

[ [ 'ACTIVE', 'active' ],
  [ 'INACTIVE', 'inactive' ],
  [ 'PENDING', 'pending' ],
  [ 'COMPLETED', 'completed' ] ]

使用in操作符和for循环

in operator 在Javascript中,检查属性是否存在于一个对象中,并返回true Enum对象持有正常的,并颠倒了键和值对的顺序

每个属性被迭代,并使用Enum[property]打印出属性名称和它的值。

for (let element in Status) {
        console.log(element +" - "+ Status[element]);
}

而输出结果是

ACTIVE - active
INACTIVE - inactive
PENDING - pending
COMPLETED - completed

forIn lodash方法

forIn forIn ,用于迭代枚举对象的键和值。 迭代每个键和值对,每次迭代都应用回调,它可以接受一个对象、回调值、键对。

_.forIn(Status, function(value, key) {
        console.log(key +" - "+ value]);
});

获取一个没有值的枚举的属性

在上面的例子中,Enum被声明了属性和它的值,并检查了各种方法来做迭代。

现在我们将看到没有值的枚举的字符串列表。

export enum Status {
    ACTIVE ,
    INACTIVE,
    PENDING,
    COMPLETED

}
console.log(Status);

枚举对象的打印格式如下。

{ '0': 'ACTIVE',
  '1': 'INACTIVE',
  '2': 'PENDING',
  '3': 'COMPLETED',
  ACTIVE: 0,
  INACTIVE: 1,
  PENDING: 2,
  COMPLETED: 3 }

循环一个对象的每个元素,使用for循环内的操作符或对象方法检查每个元素的值是不是数字和isNan 方法。

const statuslist = Object.keys(Status).filter((element) => {
    return isNaN(Number(element));
});
console.log(statuslist);

for (let element in Status) {
    if (isNaN(Number(element))) {
        console.log(element);
    }
}

并输出

[ 'ACTIVE', 'INACTIVE', 'PENDING', 'COMPLETED' ]
ACTIVE
INACTIVE
PENDING
COMPLETED

总结

总结一下,你学会了如何使用对象lodash方法来迭代枚举的键和值。