1

これは好奇心からですが、JavaScriptで比較を連結することは可能ですか?

例:

var foo = 'a',
    bar = 'b';
if (foo === ('a' || bar)) {
    console.log('yey');
}

に反対して...

var foo = 'a',
    bar = 'b';
if (foo === 'a' || foo === bar)) {
    console.log('yey');
}

PS:いくつかの条件で同じ変数を比較する場合、これは非常に便利です。

4

4 に答える 4

2

あなたが使用することができますArray.indexOf

if (["a", "b"].indexOf(foo) > -1) {
    console.log("yey");
}

この方法は一部の古いブラウザではサポートされていませんが、MDNの互換性の問題を確認してください。簡単なシムが提供されています。

コメントで@Pointyによって提案された別の方法は、プロパティがオブジェクトに存在するかどうかを確認することです。

if (foo in {a: 1, b: 1}) {  // or {a: 1, b: 1}[foo]
    console.log("yey");
}
于 2013-01-24T23:47:53.240 に答える
1

これを行うにはいくつかの異なる方法があります。私のお気に入りは、 indexOfと組み合わせて配列を使用することです。

if ( ['a', 'b'].indexOf(foo) > -1 ) {
    console.log('yey');
}
于 2013-01-24T23:47:51.080 に答える
1

配列indexOfは1つのソリューションです

別のオプションはswitchステートメントです

switch (foo) {
   case "a":
   case "b":
      console.log("bar");
      break;
   case "c":
      console.log("SEE");
      break;
   default:
      console.log("ELSE");
}

他の解決策は、オブジェクトルックアップまたは正規表現にすることもできます。

于 2013-01-24T23:50:38.857 に答える
1

通常、これには正規表現を使用します。

if (^/a|b$/i.test(foo)) {
  ...
}
于 2013-01-24T23:52:21.557 に答える