if (event.keyCode === 38 || event.keyCode === 33 || event.keyCode === 40 || event.keyCode === 34) {
}
如何缩写此代码?请记住条件switch
statements are slow。
我想做点什么
if (event.keyCode === 38 || 33 || 40 || 34)
答案 0 :(得分:13)
我实际上建议使用开关。 general rule of thumb是
但是既然你正在使用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)