如何使用二进制系统(1,2,4)作为算法?

TIM*_*MEX 2 javascript algorithm math binary

与chmod类似,我想使用1,2,4作为通知方式.

1 = Email 
2 = SMS 
4 = Push notifications
Run Code Online (Sandbox Code Playgroud)

是否有函数(最好是在javascript中)可以输入一个数字(上面)并且可以返回一个对象:

{
    email: true,
    sms: true,
    push: false
}
Run Code Online (Sandbox Code Playgroud)

我希望函数不被硬编码.我不想要一堆if语句检查每个组合.我想要一种"聪明"的方式来做到这一点.

Pau*_*ing 5

这样的事情怎么样:

var commsMode = {
    email: 1,
    sms: 2,
    push: 4,
    toObject: function(val){
        var rt = {};

        for (e in commsMode) {
            rt[e] = (val & commsMode[e]) > 0;
        }

        return rt;
    }
};

var obj = commsMode.toObject(3);
Run Code Online (Sandbox Code Playgroud)

这里的工作示例.

扩展示例:

var commsMode = {
    email: 1,
    sms: 2,
    push: 4,
    mode4: 8,
    mode5: 16,
    mode6: 32,
    mode7: 64,
    mode8: 128,
    toObject: function(val){
        var rt = {};

        for (e in commsMode) {
            rt[e] = (val & commsMode[e]) > 0;
        }

        return rt;
    }
};

var obj = commsMode.toObject(233);

for (p in obj) {
    alert(p + ': ' + obj[p])
}
Run Code Online (Sandbox Code Playgroud)

这里的工作示例