1

このように「等しい」ことは可能ですか

if(index==1|12|23|34|45|56){
    //do
}

または、実際にはこれを使用する必要があります:

if(index==1|index==12|index==23|index==34|index==45|index==56){
    // do
}

しかし、そこに多くのインデックスがあるとしたらどうでしょうか?

教えてください?

4

4 に答える 4

3

別の方法は、配列と を使用することindexOfです。

if ([1, 12, 23, 34, 45, 56].indexOf(index) != -1) {
  // do your thing
}

お使いのブラウザが をサポートしていない場合indexOfは、上記のリンクに実装があります。

于 2012-11-17T12:46:42.323 に答える
2

いいえ、それは不可能ですが、ヘルパー関数を使用すると、近いことを行うことができます。

if(inArray(index, [1, 12, 23, 34, 45, 56])) { ... }

実装は次のとおりです。

function inArray(needle, haystack) {
    var length = haystack.length;
    for(var i = 0; i < length; i++) {
        if(haystack[i] == needle) return true;
    }
    return false;
}
于 2012-11-17T12:46:52.947 に答える
1

Array.indexOfを使用したくない場合は、オブジェクトでテストできます(ただし、これはオブジェクトとタイプでは機能しません)。

var obj = {1: 1, 12: 1, 23: 1, 34: 1, 45: 1, 56: 1};

if( obj[index] ) {
    // do
}

または文字列を作成します:(ここでも文字列/数値でのみ機能します)

var s = "," + [1, 12, 23, 34, 45, 56].join(",") + ",";

if ( s.indexOf( "," + index + "," ) !== -1 ) {
    // do
}
于 2012-11-17T12:52:27.100 に答える
0

それらを1つの文字列に組み合わせると、indexOfが自動的に型を強制します。これは、一部の古いブラウザでのArray.indexOfサポートの欠如も回避します。

if ("123456".indexOf(1)) {
// ...
}

今、あなたは自分自身に尋ねるかもしれません...

「自己、米国のすべての州のように、もっと複雑なものを組み合わせたいとしたらどうしますか?」*

それは簡単です!最初にすべての州をリストアップします。

al ak az ar ca co ct de fl ga hi id il in ia ks ky 
la me md ma mi mn ms mo mt ne nv nh nj nm ny nc nd 
oh ok or pa ri sc sd tn tx ut vt va wa wv wi wy

次に、単語グループを組み合わせて、ある単語の開始文字を別の単語の終了文字と結合することにより、コードサイズを縮小します。それらを組み合わせることができなくなるまで繰り返します。

if ("fl gal morilar mnvtnmt minde msd me ma mdct ncokscaky ny nh nj ne ohia pa utx wva waz wid wy vi pr".indexOf("ny")) {
   alert("New York!");
}

警告:これを行うと、ナッツケースとしてラベル付けされる可能性があります。

于 2012-11-17T13:02:32.833 に答える