2017-07-31 130 views
0

我有一個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

回答

0

我會建議你在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" 

這種東西。檢查這樣的所有條件。