在 Typescript 中传递/获取多个枚举值?
Pass / Get multiple Enum values in Typescript?
传值是枚举值的组合,得到对应的枚举字符串
这是我的场景,
enum EnumDays {
NONE = 0,
SUN = 1,
MON = 2,
TUE = 4,
WED = 8,
THU = 16,
FRI = 32,
SAT = 64,
ALL = 127
}
我会将值传递为 5,它是 SUN & TUE (1 + 4 = 5) 的组合。
我想得到 "SUN" & "TUE" 作为结果。如何实现?
这可以通过遍历位或遍历枚举成员来完成。遍历位似乎更清晰一些。我们利用 EnumDays
将值映射到键(例如,1
到 SUN
)以及将键映射到值(SUN
到 1
)这一事实. (注意:这种方法不会找到 2147483648
的枚举值。1 << 31
,即 -2147483648
,将起作用。)
function getDayNames(value: EnumDays) {
let names = [];
for (let bit = 1; bit != 0; bit <<= 1) {
if ((value & bit) != 0 && bit in EnumDays) {
names.push(EnumDays[bit]);
}
}
return names;
}
传值是枚举值的组合,得到对应的枚举字符串
这是我的场景,
enum EnumDays {
NONE = 0,
SUN = 1,
MON = 2,
TUE = 4,
WED = 8,
THU = 16,
FRI = 32,
SAT = 64,
ALL = 127
}
我会将值传递为 5,它是 SUN & TUE (1 + 4 = 5) 的组合。
我想得到 "SUN" & "TUE" 作为结果。如何实现?
这可以通过遍历位或遍历枚举成员来完成。遍历位似乎更清晰一些。我们利用 EnumDays
将值映射到键(例如,1
到 SUN
)以及将键映射到值(SUN
到 1
)这一事实. (注意:这种方法不会找到 2147483648
的枚举值。1 << 31
,即 -2147483648
,将起作用。)
function getDayNames(value: EnumDays) {
let names = [];
for (let bit = 1; bit != 0; bit <<= 1) {
if ((value & bit) != 0 && bit in EnumDays) {
names.push(EnumDays[bit]);
}
}
return names;
}