Javascript简写如果

时间:2013-11-27 19:44:20

标签: javascript jquery

if (event.keyCode === 38 || event.keyCode === 33 || event.keyCode === 40 || event.keyCode === 34) {
}

如何缩写此代码?请记住条件switch statements are slow

我想做点什么

if (event.keyCode === 38 || 33 || 40 || 34)

5 个答案:

答案 0 :(得分:13)

我实际上建议使用开关。 general rule of thumb

  • 1或2个值:使用if
  • 3到10个值:使用开关
  • 11或更多:使用数组查找

但是既然你正在使用jQuery,你可以简单地做:

jQuery.inArray(event.keyCode, [38,33,40,34])

答案 1 :(得分:7)

使用纯JavaScript,您可以执行以下操作:

if ([38,33,40,34].indexOf(event.keyCode) >= 0) { ... }

但请记住,此方法是在ECMAScript 5中引入的,因此一些旧版浏览器不支持。

你也可以这样做,这也适用于旧浏览器:

if ({38:1,33:1,40:1,34:1}[event.keyCode]) { ... }

答案 2 :(得分:5)

您可以使用对象查找。

if ({33:true,34:true,38:true,40:true}[event.keyCode]) {
    ...
}

答案 3 :(得分:0)

你可以使用正则表达式,虽然我不确定它是否必然比switch语句更快。

if (/^(38|33|40|34)$/.test(event.keyCode)) {
 // Some code here
}

虽然它比执行对象属性查找更具可读性。

答案 4 :(得分:0)

这是使用ES6 Array.prototype.includes()的改进解决方案:

[B, C].includes(A)

您的示例:

[38, 33, 40, 34].includes(event.keyCode)