20

重複の可能性:
JavaScriptのarray.contains(obj)

何かのようなもの:

if (mystring == "a" || mystring == "b" || mystring =="c")

私はやろうと思っていました:

if (mystring in ("a", "b", "c"))

出来ますか?

4

9 に答える 9

23

あなたはindexOf()このように使うことができます

if ( [ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }

ES7での編集は少し単純化されています。今日の時点では、Chrome47+とFF43+だけがそれをサポートしているようです。

if ( [ 'a', 'b', 'c' ].includes( mystring ) ) { ... }
于 2012-10-08T12:55:47.147 に答える
5

indexOf を使用することが最初に頭に浮かぶことですが、古い IE には関数がない.indexOfことを覚えておく必要があります (そのため、カスタム コードを使用してシミュレートするか、jQuery.inArrayunderscore.js indexOf )。

if ([ 'a', 'b', 'c' ].indexOf( mystring ) > -1 ) { ... }

補足: jQuery ソースの inArray 定義を見るとわかるように、独自の indexOf 置換を作成するのは非常に簡単です。私が言ったように、独自のメソッドを作成するか、他のライブラリからコピーして貼り付けるか、すべてのブラウザで indexOf を使用できるようにしたい場合は、それらのライブラリを使用してください。

于 2012-10-08T12:57:25.360 に答える
4

あなたはそれを古い方法で行うことができます

a = "a";
b = ["a","b","c","d"];


function check(a,b){
    i = 0;        
    for (i=0;i<b.length;i++) {
        if (a === b[i]) {
            return true;
        }
    }
    return false;
}

alert(check (a,b))

indexOfはECMA-262標準に最近追加されたものであることに注意してください。そのため、すべてのブラウザに存在するとは限りません。これをIEで使用する場合は、バージョン9以降でのみ機能します。

于 2012-10-08T12:59:00.383 に答える
1

使用できますindexOf

[1,2,3].indexOf(1) will give 0
[1,2,3].indexOf(4) will give -1

したがって、indexOfが-1を返すかどうかを確認できます。

文字列についても同様です。

于 2012-10-08T12:56:10.010 に答える
1

私はこのようなことを考えます:

if (["a", "b", "c"].indexOf(mystring) != -1) {
    // do something
}
于 2012-10-08T13:01:09.337 に答える
1
if (["a", "b", "c"].indexOf(mystring) != -1) {}

これが最善の方法ですが、一部のブラウザでは機能しない場合があります。

于 2012-10-08T13:19:21.243 に答える
0

お使いのバージョンは、3文字で最速で、最も読みやすいバージョンです。

もう少し可能な値を使用すると、次のようなものを使用できます。

var c;
if (s.length==1 && (c=s.charAt(0))>='a' && c<='c') {

しかし、それは主に楽しみのためです...

于 2012-10-08T12:58:34.880 に答える
0

さらに、比較のために文字列拡張を作成できます。

String.prototype.in = function(){
  return  ~[].slice.call(arguments).indexOf(this.valueOf()) ? true : false;
}
//usage
var myStr = 'a';
myStr.in('a','b','c'); //=> true
'd'.in('a','b','c');   //=> false

古いブラウザーの場合: このMDN ページには、Array.indexOf

于 2012-10-08T13:24:21.597 に答える
-1

何かのようなもの

foreach (str in strings) { 
    if (mystring.contains(str)) { 
        ... 
    } 
}

動作する可能性があります。

于 2012-10-08T12:57:07.090 に答える