3

変数を評価し、それが他の2つの変数のいずれかに等しいかどうかを確認する必要があります。

私はこのようにします: if (a == b || a == c) { }

この方法で変数を評価するためのより良い方法が必要だと思います。ある?

4

5 に答える 5

4

1つの値を他の2つの値と比較するだけの場合、これは最も効率的で洗練されたソリューションです。何も変更する必要はありません!

1つの変数が他の変数のより大きなコレクションのいずれかと等しいかどうかを確認したい場合は、次のようにすることができます。

if(([b,c,d,e,f].indexOf(a) !== -1) {
  // "a" is equal to either b, c, d, e, or f
}

このindexOf方法は古いブラウザでは利用できない可能性があるため、必ず確認してください。従来のブラウザでは、独自のメソッドを記述して配列を検索したり、一般的な汎用ライブラリを利用したりできます...ほとんどの場合、この機能があります。

于 2012-07-04T17:21:22.140 に答える
3

Array.prototype.includes(ES7)も使用できます。

if ([b, c, d, e].includes(a)) {
  // do stuff
}

于 2019-11-02T08:26:59.547 に答える
2

..そして、比較する変数がたくさんある場合は、おそらくこれを使用できます。

if ([a,b,c,d,e,f,g,h].indexOf(yourValue) >= 0)

それを行うもう1つの方法があります。それは、もう少し入力することをいとわない場合です。

if (yourValue in {a:0,b:0, c:0, ... })

または、配列のオブジェクトバージョンを返す関数を使用することもできます。

var wrap = function(){
    var obj = {};
    for (var i=0; i<arguments.length; i++)
        obj[arguments[i]]=0;
    return obj;
};

その後:

if (yourValue in wrap(a,b,c,d,e,f,g))

jQueryに問題がない場合は、jQueryの方法を使用できます。

$.inArray(yourValue, [a,b,c,d,e,f])
于 2012-07-04T17:24:59.897 に答える
0

私はあなたが上に持っているものが最も簡単なオプションだと思います。

また、JavaScriptにはさまざまな種類の等しい演算子があります。両方の==オペランドが等しい場合、equal演算子はブール値trueを返します。JavaScriptは、比較を行うために、異なるデータ型を同じ型に変換しようとします。===演算子は厳密に等しい演算子であり、両方のオペランドが等しく、同じタイプの場合にのみブール値trueを返します。

于 2012-07-04T17:24:07.380 に答える
0
var values = [b,c,d,e,f];

for (var i=0,n=values.length; i<n; i++){
   if (values[i] == a){
       // ...
       break;
   }
}
于 2012-07-04T17:27:12.983 に答える