Last active
February 10, 2020 02:53
-
-
Save nicksheffield/7689c9b11725098702a1e98917570315 to your computer and use it in GitHub Desktop.
derive enum flags
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const daysEnum = { | |
1: 'Sun', | |
'Sun': 1, | |
2: 'Mon', | |
'Mon': 2, | |
4: 'Tue', | |
'Tue': 4, | |
8: 'Wed', | |
'Wed': 8, | |
16: 'Thu', | |
'Thu': 16, | |
32: 'Fri', | |
'Fri': 32, | |
64: 'Sat', | |
'Sat': 64, | |
} | |
const deriveEnumFlags = (val, enums) => { | |
let num = val | |
let matches = [] | |
let entries = Object.entries(enums).filter((x) => !isNaN(x[0])) | |
for (let i = entries.length - 1; i >= 0; i--) { | |
let entry = entries[i] | |
let key = +entry[0] | |
let val = entry[1] | |
if (num - key >= 0) { | |
num = num - key | |
matches.push(val) | |
} | |
} | |
return matches | |
} | |
console.log(deriveEnumFlags(daysEnum.Mon + daysEnum.Sat + daysEnum.Fri, daysEnum)) |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment