我有这个if语句,我想知道是否存在更好的写作方式
if(i == "502" || i == "562" || i == "584" || i == "482" || i == "392"){
//Some Stuff here
}
答案 0 :(得分:5)
工作正常。您也可以使用Array.indexOf
if(['502', '562', '584', '482', '392'].indexOf(i) !== -1)
{
/*Do Stuff*/
}
但是,您应该对Array.indexOf
小心,因为IE9之前的Internet Explorer版本不支持它:(。这就是为什么$.inArray
通常建议Array.indexOf
。
答案 1 :(得分:3)
使用jQuery的$.inArray()
方法:
var a = ['502', '562', '584', '482', '392'];
var i = '482';
if ($.inArray(i, a) > -1) {
alert(i);
}
参考文献:
jQuery.inArray()
- jQuery API文档答案 2 :(得分:3)
switch(i)
{
case 502:
case 562:
case 584:
case 482:
case 392: //do stuff
break;
}
答案 3 :(得分:1)
对象查找与变量查找一样快。
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
和i === '502'
,因为 Objects 中的所有键都是字符串。
答案 4 :(得分:1)
虽然其他答案非常有用,但它们与您的代码完全不同。如果比较只有数字的字符串将比较相等(使用==
)与它所代表的数字(以及可能等于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
}