JavaScriptまたはjQueryを使用して次のように書く簡単な方法はありますか?このJavaScriptのif文の短いコード
if (this.id==="a" || this.id==="b" || this.id==="c" || this.id==="d")
JavaScriptまたはjQueryを使用して次のように書く簡単な方法はありますか?このJavaScriptのif文の短いコード
if (this.id==="a" || this.id==="b" || this.id==="c" || this.id==="d")
if (['a','b','c','d'].indexOf(this.id) >= 0) { ... }
または
if (this.id in {'a':0,'b':0,'c':0,'d':0}) { ... }
'this.id'が' 'a''ならば、最初の例はそれを知らないでしょう。 – ClosureCowboy
おっと、ありがとう。編集されました。 –
@ limcのamswer(d in o)は、それと似た、最も速い方法です。あなたが提供したパフォーマンスリンクをありがとう。 – Hussein
これはいかがですか?
if (this.id in { "a":1, "b":1, "c":1, "d":1 }) {
...
}
...これか?
if("abcd".indexOf(this.id) > -1) {
...
}
** + 1 **おそらくダミー値として '1'を使用しないでしょう。 – ClosureCowboy
@ClosureCowboy:ヒントをいただきありがとうございます...私はまた、私の意見ではそれが本当に読みにくいですが、別の例を追加しました。 :) – limc
私はすべてのlettereを1つの単語として結合しません。これは変数が1文字以上の場合はうまくいかないが、これはうまくいきません。 – Hussein
次のコードを試すことができます。特に4つ以上のテスト値がある場合。
if (/^[abcdef]$/.test(this.id)) {
...
}
変数が1文字以上の場合はどうですか? – Hussein
'if(/ ^(val1 | val2 | val3)$ /。test(this.id)){...}' –
この2つのアイデアも含めてテストスクリプトを更新しました。 –
1つの可能性はswitch文です。
switch(this.id){case"a":case"b":case"c":case"d":
//do something
}
でも動作しますが、私の場合のように4回もcaseという単語を繰り返すことになり、this.idという単語を4回繰り返します。 – Hussein
@alex:そうですが、ちょっと短いので、私はそこに投げ捨てると思っていました。 :o) – user113716
+1 – Hussein
ハッシュ試験のインラインなかったため、インライン無名ハッシュ(d in o
)性能は、tests as originally writtenに誤って伝えました。
奇妙なことに、真のインラインハッシュの場合は、事前に定義されたハッシュの場合に比べて、Firefoxの4はるかに遅いが、
クロム12内50%速いしかし、より重要な点は、ということですd in o
は、ハッシュのポイントを逃してしまいます。ハッシュのポイントは、繰り返し検索する必要はありません。
2本のラインが、それでもかなり短く、そしてby far the fastest:
var o = {a:1,b:1,c:1,d:1};
if(o[this.id]){...}
ここでは、以下の様々な提案のパフォーマンスを比較するためのページです:http://jsperf.com/set-memberbship –
@Jasonルブラン私が持っています素敵なデモのための+1ですが、[もっとよく使うことはありません]常に*明快なファースト*です。遅いFF掲示のために私のCPUを責める;-) –