Skip to content

Instantly share code, notes, and snippets.

@nicksheffield
Last active February 10, 2020 02:53
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nicksheffield/7689c9b11725098702a1e98917570315 to your computer and use it in GitHub Desktop.
Save nicksheffield/7689c9b11725098702a1e98917570315 to your computer and use it in GitHub Desktop.
derive enum flags
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