私はこのようにできることを知っています...
if (Size == 4 | Size == 7 | Size == 10 | Size == 13 | Size == 16 | Size == 19)
{alert("Yes!")}
しかし、より良いコーディングはありますか?
私はこのようにできることを知っています...
if (Size == 4 | Size == 7 | Size == 10 | Size == 13 | Size == 16 | Size == 19)
{alert("Yes!")}
しかし、より良いコーディングはありますか?
if(Size%3==1&&Size<20&&Size>3 )
{alert("yes");}
jQuery.inArrayを使用できます:
if (jQuery.inArray(Size, [4, 7, 10, 13, 16, 19])>=0) {
目標は読みやすさのみであり、パフォーマンスではないことに注意してください。
これらの 6 つの値しかなく、それらがまったく変わらない場合、if
作成した醜い ( の||
代わりに を使用|
) は完全に正しい解決策です。
switch (Size) {
case 4:
case 7:
case 10:
case 13:
case 16:
case 19:
alert("Yes!");
}
if((Size - 1)%3 == 0)
alert("Yes!");
モジュロを使用できます
if (((Size - 1) % 3) == 0) {
alert ("yess!");
}
これらの数値を配列に入れて使用することができます
if(JQuery.inArray(Size, [4, 7, 10, 13, 16, 19])>=0)
http://api.jquery.com/jQuery.inArray/
しかし、これはコードの見た目を「良く」するだけで、scipt のパフォーマンスには影響しません。
このようなもの(jQueryを使用):
var accepted = [4,7,10,13,16,19];
if ($.inArray(Size, accepted) != -1)
{
...
}
jqueryで
var arr = [4,7,10,13,16,19];
if($.inArray(Size , arr)>-1) {
alert("Yes!")
}
バニラjs
var arr = [4,7,10,13,16,19];
if(arr.indexOf(Size)>-1)
{
alert('yes');
}
if((Size - 1)%3 == 0 && Size>=4 && Size<=19) alert("Yes!");
このセット{ 4, 7, 10, 13, ... }
は として記述することも{ x | ∃ k ∈ ℕ⁺ : x = 3 k + 1 }
できますが、これは に再配置できます{ x | ∃ k ∈ ℕ⁺ : k = (x - 1) / 3 }
。
したがって、チェックする必要がある(Size - 1) / 3
のは、正の整数であるかどうかだけです。または、別の言い方をすれば、Size - 1
が正かつ 3 の倍数の場合:
(0 < Size - 1) && ((Size - 1) % 3 === 0)
しかしここでも、両辺に 1 を追加することで、意味を変えずに各部分式を並べ替えることができます。
(1 < Size) && (Size % 3 === 1)
そして、この式に適合する最初の数は であるため、でSize === 4
置き換えることもできます。これにより、コードがより明確で効率的になります。1 < Size
4 <= Size
したがって、最終的な形式では、コードは次のように記述できます。
if (4 <= Size && Size % 3 === 1) {
alert("Yes!");
}