有可能吗?例如,'a'或'b'等于'X'。如果'c'或'd'或'e'等于'Y'
var qwerty = function() {
var month = 'a';
var cases = {
'a' || 'b' : month = 'X',
'c' || 'd' || 'e' : month = 'Y'
};
if (cases[month]) {
cases[month]();
}
return month;
};
console.log( qwerty() );
提前谢谢你:)
答案 0 :(得分:6)
switch语句中没有'或',因此。但你可以这样堆积你的案例:
switch(month){
case 'a': case 'b':
month = 'X'; break;
case 'c': case 'd': case 'e':
month = 'Y'; break;
}
答案 1 :(得分:6)
不确定你的方法应该返回什么(现在它只返回'a')。这是一个可能的重写,用于演示使用快捷方式布尔评估的切换:
var qwerty = function(month) {
return { month: /[ab]/.test(month) && 'X' ||
/[cde]/i.test(month) && 'Y' ||
'NOPES'};
};
qwerty('b').month; //=> 'X'
qwerty('x').month; //=> 'NOPES'
答案 2 :(得分:1)
您可以尝试以下代码,
switch (varName)
{
case "a":
case "b":
alert('X');
break;
case "c":
case "d":
case "e":
alert('Y');
break;
}
答案 3 :(得分:0)
KooiInc的答案非常酷,但它有一个很大的问题。代码将开关转换为正则表达式。我在Mozilla上的Javascript中使用KooiInc的代码循环10,000,000次并且等效的switch语句运行相同的次数。在几次循环迭代之后,switch语句的平均运行时间为21ms。 KooiInc的正则表达式的平均运行时间为2494毫秒。那速度接近17,000%。
我喜欢野外代码,我非常喜欢KooiInc解决方案的外观,但实际应用的开销太高了。我运行的代码如下,计时器位于底部。结果显示在JavaScript控制台中。
return{U:/[2]/.test(Units)&&(t=t*dpi)||/[3]/.test(Units)&&(t=t*dpi*2.54)||/[4]/.test(Units)&&(t=t*dpi*25.4)||t};
// ======================================
switch(Units)
{
case 2: //inches
t=t*dpi;
break;
case 3: //cm
t=t*dpi*2.54;
break;
case 4: //mm
t=t*dpi*25.4;
break;
}
return t;
// ======================================
console.time("test");
for (z=0;z<10000000;z++)
{
pU(10);
}
console.timeEnd("test");