-1

私はこのようにできることを知っています...

if (Size == 4 | Size == 7 | Size == 10 | Size == 13 | Size == 16 | Size == 19)
{alert("Yes!")}

しかし、より良いコーディングはありますか?

4

10 に答える 10

10
if(Size%3==1&&Size<20&&Size>3 )
{alert("yes");}
于 2012-07-06T09:47:27.320 に答える
8

jQuery.inArrayを使用できます:

if (jQuery.inArray(Size, [4, 7, 10, 13, 16, 19])>=0) {

目標は読みやすさのみであり、パフォーマンスではないことに注意してください。

これらの 6 つの値しかなく、それらがまったく変わらない場合、if作成した醜い ( の|| 代わりに を使用|) は完全に正しい解決策です。

于 2012-07-06T09:47:07.207 に答える
5
switch (Size) {
    case 4:
    case 7:
    case 10:
    case 13:
    case 16:
    case 19:
        alert("Yes!");
}
于 2012-07-06T09:46:59.113 に答える
2
if((Size - 1)%3 == 0)
     alert("Yes!");
于 2012-07-06T09:48:02.373 に答える
2

モジュロを使用できます

if (((Size - 1) % 3) == 0) {
  alert ("yess!");
}
于 2012-07-06T09:48:07.800 に答える
1

これらの数値を配列に入れて使用することができます

if(JQuery.inArray(Size, [4, 7, 10, 13, 16, 19])>=0)

http://api.jquery.com/jQuery.inArray/

しかし、これはコードの見た目を「良く」するだけで、scipt のパフォーマンスには影響しません。

于 2012-07-06T09:48:03.593 に答える
1

このようなもの(jQueryを使用):

var accepted = [4,7,10,13,16,19];

if ($.inArray(Size, accepted) != -1)
{
  ...
}
于 2012-07-06T09:48:16.620 に答える
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');
}
于 2012-07-06T09:48:23.490 に答える
1
if((Size - 1)%3 == 0 && Size>=4 && Size<=19) alert("Yes!");
于 2012-07-06T10:06:21.203 に答える
0

このセット{ 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 < Size4 <= Size

したがって、最終的な形式では、コードは次のように記述できます。

if (4 <= Size && Size % 3 === 1) {
    alert("Yes!");
}
于 2012-07-15T00:51:25.827 に答える