枚举是一个名称和值的枚举,用一个命名空间取代多个常量。我们有很多方法可以遍历枚举数据。
这篇博文涵盖了使用不同的方法对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方法来迭代枚举的键和值。