【发布时间】:2019-05-28 01:04:49
【问题描述】:
我有 3 个数组。
var severityFilters = ["High", "Medium", "Low"]
var ruleFilters = ["true", "false"]
var allResults = [
{
"name": "Test1",
"severity": "High",
"clean": true
},
{
"name": "Test2",
"severity": "Low",
"clean": false
},
{
"name": "Test3",
"severity": "Medium",
"clean": false
},
{
"name": "Test4",
"severity": "High",
"clean": true
}
]
severityFilters 数组和ruleFilters 是在用户选中和取消选中某些过滤器复选框时动态创建的。因此,如果没有选中 severityFilters 复选框,则该数组将为空。如果只检查了High,那么severityFilters 将包含High。与ruleFilters 复选框相同。
我想根据severityFilters 和ruleFilters 中的值编写一个函数来返回一些过滤结果。 filterResults 函数在选中每个过滤器复选框时被调用。
var filteredResults = []
filterResults (severityFilters, ruleFilters, allResults)
{
for (let i = 0; i < allResults.length; i++) {
if (severityFilters.length > 0 && ruleFilters.length > 0)
{
if (ruleFilters.includes(this.allResults[i].clean.toString()) &&
severityFilters.includes(allResults[i].severity)
)
{
this.filteredResults = [...this.filteredResults, ...allResults[i]];
}
}
}
}
考虑到severityFilters 和ruleFilters 都已指定,此函数有效。
如何检查以下场景的过滤:
- ruleFilters 可能为空
- severityFilters 可能为空。
- 定义了一个或多个severityFilters,但不存在ruleFilters,反之亦然。
如果不写冗长的 if 条件,有没有办法调整函数,以便过滤结果,无论 severityFilters 和 ruleFilters 数组的长度如何。
【问题讨论】:
标签: javascript angular