У меня есть 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 могут быть пустыми
- Фильтры серьезности могут быть пустыми.
- Определен один или несколько фильтров серьезности, но фильтры правила не существуют, и наоборот.
Без записи длинных условий if есть способ настроить функцию так, чтобы результаты фильтровались независимо от длины массива severityFilters
и ruleFilters
.