JavaScript - 是否可以在不使用OR的情况下在一种情况下检查多个工作日?
问题描述:
我要缩短我下面的代码: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。
答
您可以通过使用>=
和<=
运营商简化if
条件,
var day = d.getDay();
var hours = d.getHours();
if ((day >= 1 && day <=5) && hours <= 21) {
//do something
}
答
削去从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
这也将为例如之间的任意数字工作1和2,例如'1.5f' –
@LukaJacobowitz'getDay()'不会返回'1.5' –