与chmod相似,我想使用1、2、4作为通知方式。

1 = Email
2 = SMS
4 = Push notifications

是否有功能(最好在javascript中)可以输入数字(以上)并可以返回带有以下内容的对象:
{
    email: true,
    sms: true,
    push: false
}

我希望函数不被硬编码。我不想要一堆if语句来检查是否存在每种组合。我想要一种“智能”的方法。

最佳答案

这样的事情怎么样:

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);

Working example here

扩展示例:
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])
}

Working example here

10-04 17:41