3

私はこのifステートメントを持っています。それを書くためのより良い方法が存在するかどうか知りたいです

if(i == "502" || i == "562" || i == "584" || i == "482" || i == "392"){
   //Some Stuff here
}
4

5 に答える 5

5

それはうまくいきます。Array.indexOfも使用できます

if(['502', '562', '584', '482', '392'].indexOf(i) !== -1)
{
    /*Do Stuff*/
}

Array.indexOfただし、 IE9 より前のバージョンの Internet Explorer ではサポートされていないため、注意が必要です$.inArray:( Array.indexOf.

于 2013-06-01T15:07:18.457 に答える
3

jQueryによる使用$.inArray()方法:

var a = ['502', '562', '584', '482', '392'];
var i = '482';

if ($.inArray(i, a) > -1) {
    alert(i);
}

参考文献:

于 2013-06-01T15:06:15.460 に答える
3
switch(i)
{
   case 502:
   case 562:
   case 584:
   case 482:
   case 392: //do stuff
            break;
}
于 2013-06-01T15:07:27.633 に答える
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
}

ObjectsのすべてのキーはStringsi === 502であるため、このメソッドではとを区別できないことに注意してください。i === '502'

于 2013-06-01T15:26:09.543 に答える
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
}
于 2013-06-01T15:29:16.417 に答える