我怎样才能缩短这个if语句?
if(month == 1
|| month == 3
|| month == 5
|| month == 7
|| month == 8
|| month == 10
|| month == 12)
答案 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或正整数,具体取决于选择的月份,从而快速,节省空间。