0

I was trying to use a if...else statement with arrays without having to declare the arrays. I got it to work this way:

if(['banana','apple','lemon'].indexOf(somevar) >-1)
{
 //code
}
else if(['chicken','dog','elephant'].indexOf(somevar) >-1)
{
 //code
}
.
.
.

And it keep going this way until some dozens of if...elses. The code is working fine, no problem noticed. Is it a bad pratice? Is it really an array? Can it cause some performance loss, memory leaks, or reference problems? Does the "not declared" array used in this code, if it is really an array, have a proper name in programming?

4

5 に答える 5

0

どうですか

switch(somevar) {
    case 'banana': case 'apple': case 'lemon'
        //...
        break;
    case 'chicken': case 'dog': case 'elephant'
        //...
        break;
}
于 2013-09-20T14:54:25.107 に答える
0

あなたが欲しい要素を正確に知っているので、私の意見では無意味に思えます。

メモリに関しては、次のステートメントに移動したらすぐに配列の割り当てを解除する必要があります。個人的には、この例ではこの悪い習慣を検討します。前に述べたように、どれが次のステートメントになるかを知っているので何もないからです。選択されました。

ユーザーが要素を選択する静的リストの場合、これは問題ありませんが、おそらく別の場所で配列を定義し、必要に応じてそれを参照するだけなので、まったく同じ配列を何度も作成する必要はありません。 .

配列内の要素を追加/削除/変更したい場合は、上部で宣言されているときに配列を変更するか、データソースを変更するだけなので、悪い習慣だと思いますコードに散りばめることで、コードの保守が困難になる可能性を許容できます。

于 2013-09-20T14:54:41.753 に答える
0

オンザフライで配列を宣言/使用しているだけです。これは多くのコーディング スタイルの 1 つにすぎません。例えば

if (somevar == 'banana') || (somevar == 'apple') || etc...) {
  ...code...
} else if (somevar == 'chicken') || (somevar == 'dog') || etc...) {
  ... code
}

多分

switch(somevar) {
    case 'banana':// fall-through
    case 'apple': // fall-through
    case ...
         .... code ...
         break;
    case 'chicken':
    case 'dog': 
       etc...
}

それらはすべて有効です。最終的には、プロジェクトのコード スタイル ガイドラインが何であるか、およびこれらの比較をいくつ行う必要があるかによって決まります。

于 2013-09-20T14:55:10.043 に答える
0

はい、配列ですが、誤った値であるため、['banana','apple','lemon']コードは失敗します。somevar === 'chicken'['banana','apple','lemon'].indexOf(somevar) === 0

また、あなたのelse if発言は冗長です。次のようにしてインデックスを確認する必要があります。

if(['banana','apple','lemon'].indexOf(somevar) >= 0 ) { ... }
于 2013-09-20T14:55:32.333 に答える
0

問題はないと思いますが、読みやすさと保守のためにこれらの配列を宣言します。

var fruits = ['banana','apple','lemon'], 
    animals = ['chicken','dog','elephant'];
if(fruits.indexOf(somevar) > -1)
{
 //code
}
else if(animals.indexOf(somevar) > -1)
{
 //code
}

がいずれかの配列にあるかどうかを確認する理由が明確someVarになり、配列の更新が簡単になりました。別の動物を追加したい場合は、「最初の else if ブロック」ではなく、動物配列に移動します。

于 2013-09-20T15:01:40.563 に答える