39

次の点を考慮してください。

var a = 'jesus';

if(a == 'something' || a == 'nothing' || a=='anything' || a=='everything'){
   alert('Who cares?');
}

これを短くする方法はありますか?

Javascript のようなものはありif (a=='bbb'||'ccc')ますか?

さらに、jQuery はここで役に立ちますか?

4

8 に答える 8

58

あなたはこれを使うことができます...

if (["something", "nothing", "anything", "everything"].includes(a)) {
   alert('Who cares?');
}

古いブラウザのサポートに固執している場合...

if (["something", "nothing", "anything", "everything"].indexOf(a) > -1) {
   alert('Who cares?');
}

Array.prototype.indexOf()また、jQuery のタグを付けたので、 を使用せずに古いブラウザーをサポートする必要がある場合は$.inArray()

于 2012-12-06T04:44:31.943 に答える
31

正規表現の場合:

if (/^(something|nothing|anything|everything)$/.exec('jesus')) alert('Who cares?');​

またはその逆:

/^(something|nothing|anything|everything)$/.exec('jesus')||alert('Who cares?');​

[更新] さらに短く ;-)

if (/^(some|no|any|every)thing$/.exec('jesus')) alert('Who cares?');​
于 2012-12-06T05:09:30.063 に答える
18

オプションを配列に入れ、jQuery$.inArray()またはjavascrptを使用indexOf()して配列を検索できます

純粋な JavaScript  

ライブデモ

var a = 'anything';
arr = ['something', 'nothing', 'anything', 'everything'];
if(arr.indexOf(a) != -1)
    alert("condition met");    
else
    alert("condition not met");    

jQueryで

ライブデモ

var a = 'jesus';
arr = ['something', 'nothing', 'anything', 'everything'];

if($.inArray(a, arr) != -1) // With jQuery
    alert("condition met");    
else
    alert("condition not met");    
于 2012-12-06T04:44:40.173 に答える
10

ES7 ではArray.prototype.includesを使用でき、最新のすべてのブラウザーに既に実装されている indexOf よりもさらに短い表記法を使用できます。

使用例は次のとおりです。

if (['hero', 'anything', 'everything'].includes(me)) {
    alert('Who cares?');
}

そして Mozilla のポリフィル

于 2016-02-24T18:26:21.807 に答える
8

これを試して:

イエス以外の単語を確認したい場合は、以下を試してみてください。

if(a != "jesus"){
   alert('Who cares?');
}

特定の単語を確認したい場合は、以下を試してください。

var check_arrays = ['something','nothing', 'anything', 'everything'];
if(checkThis(a)){
   alert('Who cares?');
}

function checkThis(a)
{
   for(i=0;i<check_arrays.length;i++)
   {
      if(check_arrays[i] == a)
      return true;
   }
   return false;
}
于 2012-12-06T04:45:05.727 に答える
4

次の場合の代わりにスイッチを使用している可能性があります。

var a = 'jesus';
switch (a){
    case 'something':
    case 'nothing' :
    case 'anything':
    case 'everything':
   alert('Who cares?');
   break;
}
于 2012-12-06T04:48:02.040 に答える
2

オブジェクト リテラルの使用:

var all={something:1,nothing:1,anything:1,everything:1};
if (all.hasOwnProperty('jesus')) alert('Who cares?');​

これは、一般的に使用する最も簡潔なクロスブラウザー式だと思います (目的が文字列を比較することである限り)。また、プロパティを簡単に追加または削除できるため、非常に柔軟です。

all.mything=1;
delete all.nothing;
于 2012-12-06T18:40:01.617 に答える
0

これを行う簡単な方法はないと思います。ただし、関数in_arrayを作成して、必要な場所で使用できます

Array.prototype.in_array = function(p_val) {
    for(var i = 0, l = this.length; i < l; i++) {
        if(this[i] == p_val) {
            return true;
        }
    }
    return false;
}

var v_array = [ 'something','nothing', 'anything', 'everything'];

var a = "jesus";

if(v_array.in_array(a)){
    alert('Who cares?');
}
于 2012-12-06T04:49:03.000 に答える