次のようにしてみてください。申し訳ありませんが、これは Python ですが、JavaScript の翻訳は非常に似ているはずです。
def notifications(mask):
return {
'email' : mask & 4 != 0,
'sms' : mask & 2 != 0,
'push' : mask & 1 != 0
}
notifications(0b111) # same as notifications(7), or notifications(email+sms+push)
=> {'push': True, 'sms': True, 'email': True}
上記では、通知のバイナリ ビット マスクが0b111
(基数 10 を使用する場合は 7) であると言っています。これは、3 つの通知すべてが有効になっていることを意味します。同様に、ビット マスク0b010
(または基数 10 の 2) として渡した場合、答えは次のようになります。
notifications(0b010) # same as notifications(2), or notifications(sms)
=> {'push': False, 'sms': True, 'email': False}