传递值,它是枚举值的组合,并获取其对应的枚举字符串。
这是我的情况,
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”的结果。如何实现呢?
答案 0 :(得分:0)
这可以通过迭代位或通过枚举成员来完成。遍历位似乎更干净。我们利用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;
}