我在循环中有一个 if 语句,其中包含多个条件。我想将数据库中的数据与 HTML 表单中的输入数据相匹配。当表单中的输入字段为空时,它将作为 null 存储在数据库中。我在数据库中有此列(itemsSortedByDate[i].FD_MIMO
(,它可以为空或具有一些值。我无法将数据库中的空白字段与 null 匹配。此外,即使该列(itemsSortedByDate[i].FD_MIMO
(在数据库中具有一些值,我的for循环也会搜索具有空字段的数据库,只是因为其他字段匹配。我的Javascript如下。最后一个条件是制造问题。ScenarioListViewModel.fdMimo()
和itemsSortedByDate[i].FD_MIMO
应该是相同的,无论它是 null 还是具有某种值。但是在控制台中.log它们是不同的。感谢您的帮助,非常感谢。
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");
}
};
我建议您在if语句中的所有条件下使用===,它可以帮助您解决问题,因为===与==之间存在差异。
请参阅此问题以了解差异。
例如:
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"
这种东西。检查所有这样的条件。