2016-03-07 124 views
1

我要縮短我下面的代碼:JavaScript - 是否可以在不使用OR的情況下在一種情況下檢查多個工作日?

if (d.getDay() == 1 && d.getHours() <= 21 || d.getDay() == 2 && d.getHours() <= 21 || d.getDay() == 3 && d.getHours() <= 21 || d.getDay() == 4 && d.getHours() <= 21 || d.getDay() == 5 && d.getHours() <= 21) { 
    //do something 
} 

到這樣的事情?:

if (d.getDay() == 1-5 && d.getHours() <= 21) { 
    //do something 
} 

,甚至更短。這是可能的,什麼是最好的方式?我在代碼中多次使用該行,有時幾乎沒有變化。如果可能的話沒有jQuery。

回答

2

您可以通過使用>=<=運營商簡化if條件,

var day = d.getDay(); 
var hours = d.getHours(); 
if ((day >= 1 && day <=5) && hours <= 21) { 
    //do something 
} 
+0

這也將爲例如之間的任意數字工作1和2,例如'1.5f' –

+2

@LukaJacobowitz'getDay()'不會返回'1.5' –

1

削去從Rajaprabhu Aravindasamy的回答幾個按鍵:

var day = d.getDay(); 
var hours = d.getHours(); 
if (hours < [0,22,22,22,22,22,0][day]) { 
    //do something 
} 
+0

也就是說,除非有例如,星期五開放時間較短,這在我的變體中更容易實施。 –

+0

目標不應總是寫最短的代碼。雖然你的想法非常出色,但代碼中的性能肯定會受到影響,特別是如果該函數正在頻繁執行。 – Rafid

相關問題