javascript - 使用数字比较缩短if语句

时间:2014-04-28 10:50:09

标签: javascript if-statement

我怎样才能缩短这个if语句?

if(month == 1 
|| month == 3
|| month == 5
|| month == 7
|| month == 8
|| month == 10
|| month == 12)

3 个答案:

答案 0 :(得分:2)

您可以使用像这样的数组

if ([1, 3, 5, 7, 8, 10, 12].indexOf(month) + 1)
如果找不到要搜索的元素,

Array.prototype.indexOf会返回-1。由于我们向其添加1,如果找不到该元素,则表达式将变为0并评估为Falsy。

答案 1 :(得分:2)

下面

if ([1, 3, 5, 7, 8, 10, 12].indexOf(month) !== -1)
    // do stuff

答案 2 :(得分:1)

5546&1<<month,如if(5546&1<<month) {}中假设你的数字是[1,2,3,4,5,6,7,8,9,10,11,12]之一(实际上是到31)

这个使用比特包装。 5546是0b1010110101010,它是您所需月份的地图,从12到1和1个空位(用于较短的记录)。 1<<month得到一位,而班次是剩下的月份,&amp;选择我们使用的月份,结果数字为0或正整数,具体取决于选择的月份,从而快速,节省空间。