2016-11-10 67 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