使用if语句和&&和||内部for循环

问题描述:

我有一个if语句内循环与多个条件。我想将数据库中的数据与HTML表单中的输入数据进行匹配。当表单中的输入字段为空时,它将作为空值存储在数据库中。我在数据库中有这个列(itemsSortedByDate[i].FD_MIMO),它可以是空值或可以有一些值。我无法将空白字段与数据库中的null匹配。即使该列(itemsSortedByDate[i].FD_MIMO)在数据库中有某些值,我的for循环仅仅因为其他字段匹配而搜索具有空字段的数据库。我的Javascript如下。最后一个条件是造成问题。 ScenarioListViewModel.fdMimo()itemsSortedByDate[i].FD_MIMO应该是相同的,无论它是空还是有一定的价值。但是在console.log中它们是不同的。感谢您的帮助,非常感谢。使用if语句和&&和||内部for循环

self.getJobIdForCapacity = function(itemsSortedByDate){ 
      var jobIdForCapacity; 
      var found = false; 
      for (var i = 0, len = itemsSortedByDate.length; i < len; i++) { 
       if(itemsSortedByDate[i].DB_Name == ScenarioListViewModel.db_name() 
       && itemsSortedByDate[i].Split_Mode == ScenarioListViewModel.splitMode() 
       && itemsSortedByDate[i].Full_Output == ScenarioListViewModel.fullOutput() 
       && (itemsSortedByDate[i].Workflow_Status == "Completed" || itemsSortedByDate[i].Workflow_Status == "Running") 
       && (itemsSortedByDate[i].Disposition == "Success" || itemsSortedByDate[i].Disposition == "None") 
       && (itemsSortedByDate[i].FD_MIMO == ScenarioListViewModel.fdMimo() || itemsSortedByDate[i].FD_MIMO == null)){ 
        jobIdForCapacity = itemsSortedByDate[i].Title; 
        console.log("Job Id:" + jobIdForCapacity); 
        console.log("fdmimo from form:" +ScenarioListViewModel.fdMimo()); 
        console.log("fdmimo from list:" +itemsSortedByDate[i].FD_MIMO); 
        self.getJobResults(jobIdForCapacity); 
        found = true; 
        break; 
       } 
      } 
      if (!found) { 
       alert("Job not found in Sharepoint Execution History List. Click Execute Model to run"); 
      } 
     }; 
+0

包含您的'ScenarioListViewModel'代码和'itemsSortedByDate'的示例值,以便其他人可以复制。 – Adrian

我会建议你在if语句的所有条件中使用===,它可以帮助你解决你的问题,因为=== vs ==有区别。

请参阅此question的差异。

例如:

itemsSortedByDate[i].DB_Name == ScenarioListViewModel.db_name() 

itemsSortedByDate[i].DB_Name === ScenarioListViewModel.db_name() 

条件:

"Completed" || itemsSortedByDate[i].Workflow_Status == "Running" 

总是会返回 “已完成” 没关系itemsSortedByDate[i].Workflow_Status == "Running"是真还是假。在这里你可以使用三元运算符如

itemsSortedByDate[i].Workflow_Status == "Running"? "Running" : "Compelted" 

这种东西。检查这样的所有条件。