2016-11-10 54 views
0

我不知道如何解決這個問題。我需要的是這樣的:將條件傳遞給javascript中的var

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 
} 

我需要根據以前的一些價值觀不同的條件,最後裏面的代碼,如果始終是相同的,所以我不需要:

if (arr3[cliente].año == year) 
    // code 
else if (arr3[cliente].año == year && arr3[cliente].sic) 
    // 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

好的,謝謝。我會採取這個答案,因爲是第一個。 – pmirnd

+2

(@pmirnd)爲了便於閱讀,我可能會將條件放在括號'condition =(...)'中,所以粗心的目光不會只看到'condition = arr3 [cliente].año'。這不是一個語法問題(這個答案完全按照原樣),但我認爲parens有助於可讀性。 (請隨意或隨意提供此建議!) – 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

我的提議。如果一個== 1,你將需要其餘的條件,如果== 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中有一個「客戶」的問題,因爲它是在「for(client in arr3)」中定義的,所以這一個會更好,但問題最好由第一個回答一。謝謝。 – pmirnd

+0

是的,完美的作品,再次感謝人。 – pmirnd