2016-11-10 6 views
0

これを解決する方法がわかりません。どのようにすることができjavascriptのvarに条件を渡す

if (arr3[cliente].año == year) 
    // code 
else if (arr3[cliente].año == year && arr3[cliente].sic) 
    // code 

var condition; 
if (a==1) //a comes from another part 
    condition = "arr3[cliente].año == year"; 
if (a==2) 
    condition = "arr3[cliente].año == year && arr3[cliente].sic" 

//now another if 

if (condition){ 
     //rest of code 
} 

常に同じであれば、私はいくつかの以前の値、最後の内のコードを依存して、異なる条件を必要とするので、私は必要はありません。私はこのようなものが必要それ?

答えて

4

式の結果を変数に割り当てます(現在はの文字列を割り当てています)。式はif文の中である必要はありません、結果が重要なのです:もちろん

var condition; 
if (a==1) 
    condition = arr3[cliente].año == year; 
if (a==2) 
    condition = arr3[cliente].año == year && arr3[cliente].sic; 

// It this point `condition` will either have the value `undefined`, `true` or `false`.  
if (condition) { 
    // code 
} 

次にこれを軽減/簡略化することができます。

if (arr3[cliente].año == year && (a == 1 || a == 2 && arr3[cliente].sic)) { 
    // code 
} 

ステートメントまたは比較を繰り返す必要はありません。ifこれはまた、プロパティのいずれかにアクセスすることに副作用がないことを前提としています。

+1

[OK]を、ありがとう。私は最初のものだったので、この答えを取るでしょう。 – pmirnd

+2

(@ pmirnd)読みやすくするために、条件をカッコで囲んで、 'condition =(...)'としているので、不注意に 'condition = arr3 [cliente].año'しか表示されません。文法上の問題ではありません(この回答はそのままの状態で動作します)。しかし、私は括弧が読みやすくするのに役立つと思います。 (取っておくか、このアドバイスをしてください!) – apsillers

1

あなたが持っている条件だけを使用し、文字列としては使用しないでください。彼らは真か偽か、あなたのif(condition)チェックはまだうまく動作します。

var condition; 
if (a == 1) //a comes from another part 
    condition = arr3[cliente].año == year; 
if (a == 2) 
    condition = arr3[cliente].año == year && arr3[cliente].sic; 

//now another if 

if (condition) { 
    //rest of code 
} 
+1

ありがとう、ありがとう。私は最初だったので、他の答えを取るつもりです。私は+1します。 – pmirnd

1

私の提案。 a == 1の場合は残りの条件が必要で、a == 2の場合は2番目のオプション条件が必要です。

if (a==1 && (arr3[cliente].año == year)){ 
    commonFunction(); 
} else if (a==2 && (arr3[cliente].año == year && arr3[cliente].sic)){ 
    commonFunction(); 
} 

function commonFunction() { 
    //rest of code 
} 
+1

ありがとう、私はこれを使用すると思いますが、arr3の "cliente"に問題があります。これは "for(cliente in arr3)"の内部で定義されているためですが、これはうまくいくでしょうが、 1。ありがとう。 – pmirnd

+0

はい、ありがとうございました。 – pmirnd

関連する問題