スイッチの例は、通常jqueryスイッチケースで範囲を使用しますか?
Monday:
Tuesday:
Wednesday:
etc.
のように私は範囲を使用したいと思います。
from 1-12:
from 13-19:
from 20-21:
from 22-30:
可能でしょうか?私はjavascript/jqueryを使っています。
スイッチの例は、通常jqueryスイッチケースで範囲を使用しますか?
Monday:
Tuesday:
Wednesday:
etc.
のように私は範囲を使用したいと思います。
from 1-12:
from 13-19:
from 20-21:
from 22-30:
可能でしょうか?私はjavascript/jqueryを使っています。
あなたは非常に冗長
かである
var x = 5;
switch (x) {
case 1: case 2: case 3: case 4: ...
break;
case 13: case 14: case 15: ...
break;
...
}
この
function checkRange(x, n, m) {
if (x >= n && x <= m) { return x; }
else { return !x; }
}
var x = 5;
switch (x) {
case checkRange(x, 1, 12):
//do something
break;
case checkRange(x, 13, 19):
...
}
を試みることができる、これはあなたを取得行動を介してスイッチ秋悪用を試みることができますあなたが望む行動。 checkRangeのelseに!x
を返す理由は、undefined
をswitchステートメントに渡すときの問題を防ぐためです。関数がundefined
(jdkの例のように)を返し、undefined
をスイッチに渡すと、最初のケースが実行されます。 !x
は、switch文がどのcaseを実行するかをどのように選択するかという等価性のテストでは、x
と等しくないことが保証されています。
いいえ、これを行うにはif/else ifシリーズを使用する必要があります。 JavaScriptはこのファンシーではありません。 (多くはない言語がある。)
あなたは興味深いkludgesを作ることができます。たとえば、JavaScriptスイッチを使用して数値を範囲に対してテストするには、カスタム関数を記述できます。基本的には、機能テストにn値を与え、それが範囲内にあればそれを返す。それ以外の場合は、未定義またはその他のダミー値が返されます。
<script>
// Custom Checking Function..
function inRangeInclusive(start, end, value) {
if (value <= end && value >= start)
return value; // return given value
return undefined;
}
// CODE TO TEST FUNCTION
var num = 3;
switch(num) {
case undefined:
//do something with this 'special' value returned by the inRangeInclusive(..) fn
break;
case inRangeInclusive(1, 10, num):
alert('in range');
break;
default:
alert('not in range');
break;
}
</script>
これはGoogle Chromeで動作します。私は他のブラウザをテストしなかった。
numが定義されていない場合は動作しますか? – barkmadley
numが未定義の場合、期待どおりに機能しません。 –
@barkmadley:コードを編集し、未定義の値を明示的に処理するためのケースを追加しました。 inRangeInclusive(..)関数で使用する方が良い戻り値があるかもしれません。提案に開放されています。ありがとう。 –
パーティーに遅れていますが、同じ質問に対する回答を検索すると、このスレッドに出会いました。現在私は実際にはスイッチを使用していますが、別の方法です。例:
switch(true) {
case (x >= 1 && x <= 12):
//do some stuff
break;
case (x >= 13 && x <= 19):
//do some other stuff
break;
default:
//do default stuff
break;
}
これは、IF文の束よりも読みやすくなりました。
JavaScriptのようにすることはできません。式を評価しません。 – zuallauz
あなたが何を意味するのかわからない - それは私がそれに投げたすべてのテストケースでうまく動作します。 – stephennmcdonald
[JavaScriptを使用してswitch caseステートメントで範囲を使用するにはどうすればよいですか?](http://stackoverflow.com/questions/17145723/how-can-i-use-ranges-in-a-switch- case-statement-using-javascript) – Helen