我有这个 if 语句,我想知道是否存在更好的编写方法
if(i == "502" || i == "562" || i == "584" || i == "482" || i == "392"){
//Some Stuff here
}
我有这个 if 语句,我想知道是否存在更好的编写方法
if(i == "502" || i == "562" || i == "584" || i == "482" || i == "392"){
//Some Stuff here
}
这很好用。您也可以使用Array.indexOf
if(['502', '562', '584', '482', '392'].indexOf(i) !== -1)
{
/*Do Stuff*/
}
但是,您应该小心,Array.indexOf
因为 IE9 之前的 Internet Explorer 版本不支持它 :(。这就是为什么$.inArray
经常建议超过Array.indexOf
.
jQuery的使用$.inArray()
方法:
var a = ['502', '562', '584', '482', '392'];
var i = '482';
if ($.inArray(i, a) > -1) {
alert(i);
}
参考:
jQuery.inArray()
- jQuery API 文档switch(i)
{
case 502:
case 562:
case 584:
case 482:
case 392: //do stuff
break;
}
对象查找几乎与变量查找一样快。
if ({
"502": 1,
"562": 1,
"584": 1,
"482": 1, // if you're concerned about conflict with `Object.prototype`
"392": 1 // then consider using `{...}[i] === 1` or
}[i]) { // `{...}.hasOwnProperty(i)`
// code if found
}
请注意,此方法不会让您区分i === 502
和因为Objectsi === '502'
中的所有键都是Strings。
虽然其他答案非常有用,但它们与您的代码并不完全相同。如果您比较仅包含数字的字符串,则将等于(使用==
)与它表示的数字(以及可能具有toString()
等于该数字的其他对象)进行比较。indexOf
但,$.inArray
或并非如此switch
:
var i = 502;
i == "502"' // True
["502"].indexOf(i) // False
与您的代码完全等效的是:
var VALUES = ['502', '562', '584', '482', '392'];
if(VALUES.some(function(e) { return e == i; }) {
// do something
}