Javascript 当条件存储在变量中时,if语句未正确执行

Javascript 当条件存储在变量中时,if语句未正确执行,javascript,Javascript,我在if语句中动态创建条件并存储在Profile_Filter varabile中,但当我对数组运行它时,它会将所有记录添加到我的临时数组中,而不是添加匹配的记录 var Profile_Filter = ""; if ($("#DoctorNameDropDown option:selected").text() != "- Select One -") { Profile_Filter += 'gAssessorsCompanyAssociationsArray[i].Name ==

我在if语句中动态创建条件并存储在Profile_Filter varabile中,但当我对数组运行它时,它会将所有记录添加到我的临时数组中,而不是添加匹配的记录

var Profile_Filter = "";

if ($("#DoctorNameDropDown option:selected").text() != "- Select One -") {
  Profile_Filter += 'gAssessorsCompanyAssociationsArray[i].Name == $("#DoctorNameDropDown option:selected").val()';
}

if ($("#Degree").val() != "") {
  var Degree_Filter = "";
  var Degree = $("#Degree").val().split(";");

  for (var i = 0; i < Degree.length; i++) {
    if (Degree[i] == "") {
      Degree.splice(i, 1);
      i--;
    }
  }

  if (Degree.length > 1) {
    for (var j = 0; j < Degree.length; j++) {
      if (j == 0) {
        Degree_Filter += '(gAssessorsCompanyAssociationsArray[i].Degree.indexOf("' + Degree[j] + '") > 0';
      } else {
        Degree_Filter += ' && gAssessorsCompanyAssociationsArray[i].indexOf("' + Degree[j] + '") > 0';
      }
    }
    Degree_Filter += ")";
  } else Degree_Filter += '(gAssessorsCompanyAssociationsArray[i].Degree.indexOf("' + Degree[0] + '") > 0';

  if (Profile_Filter != "") Profile_Filter += " && " + Degree_Filter; else Profile_Filter += Degree_Filter;
}

var temp = [];

for (var i = 0; i < gAssessorsCompanyAssociationsArray.length; i++) {
  if (Profile_Filter) alert(gAssessorsCompanyAssociationsArray[i].Name);
}
var Profile_Filter=”“;
如果($(“#doctor名称下拉选项:选中”).text()!=“-选择一个-”){
Profile_Filter+='gAssessorsCompanyAssociationsArray[i]。Name=$(“#doctorname下拉选项:选中”).val();
}
如果($(“#度”).val()!=“”){
var度_过滤器=”;
var Degree=$(“#Degree”).val().split(“;”);
对于(变量i=0;i1){
对于(var j=0;j0';
}否则{
度过滤器+='&&gAssessorsCompanyAssociationsArray[i]。索引为(“+Degree[j]+'”)>0';
}
}
度_过滤器+=”;
}else Degree_Filter+='(gAssessorsCompanyAssociationsArray[i].Degree.indexOf(“'+Degree[0]+'”)>0';
if(Profile\u Filter!=“”)Profile\u Filter+=“&&&”+度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度度;
}
var-temp=[];
对于(var i=0;i
请注意,您的
配置文件\u过滤器
变量不包含任何可执行代码;它只包含一个看起来像Javascript代码但实际上没有解释的简单字符串

在if语句中将此字符串变量用作布尔表达式时,解释器只需检查字符串“是否为真”(对于字符串,这意味着检查字符串的长度是否大于0)


为了实际执行存储在if语句内变量中的代码,您可以使用
eval
函数(但是请查看了解为什么使用
eval
通常是一个坏主意)。

当我将语句更改为if(eval(Profile\u Filter))时,我会丢失它)插入错误。然后在您的评估代码中出现语法错误。例如,检查语句
Degree\u Filter+=”(gAssessorsCompanyAssociationsArray[i].Degree.indexOf(“+Degree[j]+””)>0';
,似乎缺少一个右括号。非常感谢。它与eval一起工作。由于不推荐使用eval,是否可以不使用eval进行此操作?