Match with flags
Using bit field operators on bit flags to query conditional state.
by Peer Reynders
JavaScript
const STATUS = {
reject: 'nope',
accept: 'hire',
reevaluate: 'maybe',
};
const FLAGS = {
noShow: 0x01,
availableImmediately: 0x02,
angular: 0x04,
react: 0x08,
vue: 0x10,
};
const results = FLAGS.availableImmediately | FLAGS.vue;
const status = interviewStatus(results);
console.log(status);
function interviewStatus(results) {
if (match(results, FLAGS.noShow)) return STATUS.reject;
if (
match(results, FLAGS.angular) ||
match(results, FLAGS.react) ||
match(results, FLAGS.vue | FLAGS.availableImmediately)
)
return STATUS.accept;
return STATUS.reevaluate;
}
function match(value, flags) {
return (value & flags) === flags;
}