私はこの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
}
ObjectsのすべてのキーはStringsi === 502
であるため、このメソッドではとを区別できないことに注意してください。i === '502'
他の回答は非常に便利ですが、コードとまったく同じではありません。数字のみの文字列を比較すると、( を使用して==
) 等しいと比較され、それが表す数値 (および、それに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
}