このように「等しい」ことは可能ですか
if(index==1|12|23|34|45|56){
//do
}
または、実際にはこれを使用する必要があります:
if(index==1|index==12|index==23|index==34|index==45|index==56){
// do
}
しかし、そこに多くのインデックスがあるとしたらどうでしょうか?
教えてください?
このように「等しい」ことは可能ですか
if(index==1|12|23|34|45|56){
//do
}
または、実際にはこれを使用する必要があります:
if(index==1|index==12|index==23|index==34|index==45|index==56){
// do
}
しかし、そこに多くのインデックスがあるとしたらどうでしょうか?
教えてください?
別の方法は、配列と を使用することindexOf
です。
if ([1, 12, 23, 34, 45, 56].indexOf(index) != -1) {
// do your thing
}
お使いのブラウザが をサポートしていない場合indexOf
は、上記のリンクに実装があります。
いいえ、それは不可能ですが、ヘルパー関数を使用すると、近いことを行うことができます。
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;
}
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
}
それらを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!");
}
警告:これを行うと、ナッツケースとしてラベル付けされる可能性があります。