所以我正在写一个时区插件,我需要简化我的if语句,因为我想避免重复。我目前正在编写它来改变各州的时间(是的,我知道有些州可以有多个时区。我稍后会对其进行改进,可能是县。)
而不是说值是否等于这个OR这个OR这个等等我们可以将所有可能的值存储在变量中吗?下面,我有一个太平洋国家的数组,如何判断状态值是否等于其中一个?
的jQuery
function GetClientTime() {
// current time
var dt = new Date();
// pacific time
var pacifictime = dt.getHours() - 2 + ":" + (dt.getMinutes() < 10 ? '0' : '') + dt.getMinutes();
// mountain time
var mountaintime = dt.getHours() - 1 + ":" + (dt.getMinutes() < 10 ? '0' : '') + dt.getMinutes();
// central time
var centraltime = dt.getHours() + ":" + (dt.getMinutes() < 10 ? '0' : '') + dt.getMinutes();
// eastern time
var easterntime = dt.getHours() + 1 + ":" + (dt.getMinutes() < 10 ? '0' : '') + dt.getMinutes();
// get am/pm
var hours = new Date().getHours();
var ampm = (hours >= 12) ? "PM" : "AM";
var pacificstates = [
"WA", "OR", "CA", "NV"
]
if ($('#state').val() == pacificstates) {
$('#currenttime').show().val(pacifictime + " " + ampm);
} else if ($('#state').val() == 'CO') {
$('#currenttime').show().val(mountaintime + " " + ampm);
} else if ($('#state').val() == 'TX' || $('#state').val() == 'LA') {
$('#currenttime').show().val(centraltime + " " + ampm);
} else if ($('#state').val() == 'NY' || $('#state').val() == 'NJ') {
$('#currenttime').show().val(easterntime + " " + ampm);
} else {
$('#currenttime').hide();
}
}
答案 0 :(得分:0)
switch
语句计算表达式,将表达式的值与case
子句匹配,并执行与该案例相关的语句。
var result = false;
swtich ( $('#state').val() ) {
/* If the value is "CO"... */
case 'CO':
result = pacifictime + " " + ampm;
break;
/* If the value is "TX" or "LA"... */
case 'TX':
case 'LA':
result = entraltime + " " + ampm;
break;
default:
break;
}
/* If the result was set, display the result. */
if (result)
$('#currenttime').show().val( result );
/* Otherwise, hide it. */
else
$('#currenttime').hide();
答案 1 :(得分:0)
如果您尝试使用对象从州到时区可能是您最有效的手段。
var stateToTimeZone = {};
stateToTimeZone['TX'] = entraltime + " " + ampm;
stateToTimeZone['LA'] = entraltime + " " + ampm;
stateToTimeZone['CO'] = pacifictime + " " + ampm;
. . .
var result = stateToTimeZone[$('#state').val()];
if (result)
$('#currenttime').show().val( result );
/* Otherwise, hide it. */
else
$('#currenttime').hide();
基本上,您可以更快地交换更多内存。但我认为这是你在这种情况下想做的事情。它也可以很容易地扩展到县,只需使用类似&#34; WA_King&#34;这样的键,因为相同的县名可能出现在不同的州。
答案 2 :(得分:0)
您可以在数组上使用indexOf()方法,如下所示:
if (pacificstates.indexOf($('#state').val()) !== -1)
如果该调用返回-1,则表示该元素未包含在该数组中。
请参阅此处了解工作示例http://jsfiddle.net/q98sLy5c/2/