Enum是Javascript/typescript中引入的一种新的数据类型,它只保存字符串或数字。
有些时候,有必要检查Enum对象中是否存在声明的字符串或数字。
这篇博文涵盖了在javascript typescript ,检查字符串或数字值是否存在于Enum中。
你可以查看我的其他关于类型化Enum对象的文章
检查字符串是否存在于Enum值中
我们有很多方法可以检查字符串是否存在于枚举中
使用ES7数组包括方法
ES7,最新的javascript语言引入了includes方法。
enum WeekEndMap {
Sunday = "sunday",
Saturday = "saturday"
}
Object.values() 该方法是ES6的一种方法,它接受枚举或对象,并返回枚举字符串的数组,includes()方法简单地检查并返回true - 如果存在,false - 不存在。
const list=Object.values(WeekEndMap);
console.log(list)//[ 'sunday', 'saturday' ]
console.log(typeof list); // object
if (Object.values(WeekEndMap).includes('sunday')) {
console.log("string exists")
}
如果提供的值是数字,这个方法将不起作用。
如何检查数字在枚举中的存在,typecript/Javascript
让我们声明周的枚举
export enum Weeks {
MONDAY = 1,
TUESDAY= 2,
WEDNESDAY = 3,
THURSDAY = 4,
FRIDAY = 5,
SATURDAY=6,
SUNDAY=7,
}
Enum被声明为包含数字值的字符串。
在typescript中,Enum对象的格式如下所示
key <--> value
value <--> key
打印枚举对象,如下所示
{ '1': 'MONDAY',
'2': 'TUESDAY',
'3': 'WEDNESDAY',
'4': 'THURSDAY',
'5': 'FRIDAY',
'6': 'SATURDAY',
'7': 'SUNDAY',
MONDAY: 1,
TUESDAY: 2,
WEDNESDAY: 3,
THURSDAY: 4,
FRIDAY: 5,
SATURDAY: 6,
SUNDAY: 7 }
数字可以通过多种方式在枚举中进行检查
- 使用in操作符 Enum是一个对象,
In operator,如果属性存在于一个对象中,则返回真,否则返回假。 - 枚举索引语法--如果数字存在,则返回字符串,否则返回未定义。
let numberValue=1
console.log(numberValue in Week) //true
console.log(Week[numberValue]) //MONDAY
console.log(Week[10]) // undefined
if (Week[numberValue]) {
console.log("number exists")
}
if (!Week[10]) {
console.log("number not exists")
}
和控制台输出是
true
MONDAY
undefined
number exists
number exists