【发布时间】:2018-06-07 23:38:59
【问题描述】:
我有一个函数,我必须返回一个带有匹配过滤器的元素数组。函数代码如下:
filter_getCustomFilterItems(filterNameToSearch: string, appliedFilters: Array<any>) {
let tempFilterArray = [];
let masterFilterList = getMasterFilterList();
/*
filterNameToSearch can be a string either as `Item2` or `Item3`
masterFilterList will be of type
masterFilterList: Array<any> = [
{
Item1: 'some-item-1',
Item2: 'some-item-2',
Item3: 'some-item-3',
Item4: 'some-item-5',
},
{
Item1: 'some-item-10',
Item2: 'some-item-11',
Item3: 'some-item-12',
Item4: 'some-item-13',
},......
];
appliedFilters will be of type
appliedFilters: Array<any> = [
{
name: 'Item1',
filters: [
{value: 'some-item-1', status: 'selected'},
{value: 'some-item-10', status: 'selected'}
]
},......
];
*/
for (let masterFilterItem of masterFilterList) {
//Missing logic here
}
}
我想过滤 masterFilterList 以返回一个项目数组
filterNameToSearch = 'Item2' 在以下条件下:
1) 对于appliedFilters 中的每个数组元素(假设appliedFilterItem),将appliedFilterItem.name 与masterFilterItem[appliedFilterItem.name] 进行比较,并检查appliedFilterItem 中的任何过滤器是否与masterFilterItem[appliedFilterItem.name] 具有相同的值
2) 条件必须类似于masterFilterItem[appliedFilterItem[0].name] == appliedFilterItem[0].filters[0].value && appliedFilterItem[0].filters[0].status === 'selected' && masterFilterItem[appliedFilterItem[1].name] == appliedFilterItem[1].filters[0].value && appliedFilterItem[1].filters[0].status === 'selected' and so on for all appliedFilterItems。但是appliedFilters 中的元素数量是动态的。
所以请帮我解决这个问题?
【问题讨论】:
-
不清楚你需要的输出是什么
-
输出将是
masterFilterList中的项目数组,并应用了条件。如果给定 filterNameToSearch = "Item2",它必须返回masterFilters中的所有Item2元素,条件来自appliedFilters
标签: javascript arrays typescript ecmascript-6