过滤器数组中的数组,仅获取过滤后的项
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了过滤器数组中的数组,仅获取过滤后的项相关的知识,希望对你有一定的参考价值。
我有以下名为过滤器的数组,并尝试按选定的项目对其进行过滤。最后,我希望所有过滤器都位于选定项目的位置,但仅限于选定的项目
let filters = [
id: 0,
name: 'property',
items: [
id: 0,
name: 'x',
isSelected: false
,
id: 1,
name: 'y',
isSelected: true
]
,
id: 1,
name: 'property2',
items: [
id: 0,
name: 'x',
isSelected: true
,
id: 1,
name: 'y',
isSelected: false
]
]
我想在末尾得到以下数组:
let filteredFilters = [
id: 0,
name: 'property',
items: [
id: 1,
name: 'y',
isSelected: true
]
,
id: 1,
name: 'property2',
items: [
id: 0,
name: 'x',
isSelected: true
]
]
我尝试了以下代码,但是不起作用。
let filteredFilters = filters.filter(filter =>
return filter.items.filter(item =>
return item.isSelected === true;
)
)
答案
由于要处理嵌套数组,因此需要map
+ filter
:
let filters = [
id: 0,
name: 'property',
items: [
id: 0,
name: 'x',
isSelected: false
,
id: 1,
name: 'y',
isSelected: true
]
,
id: 1,
name: 'property2',
items: [
id: 0,
name: 'x',
isSelected: true
,
id: 1,
name: 'y',
isSelected: false
]
]
let filteredFilters =
filters.map(
(items, ...rest) => (...rest, items: items.filter(item => item.isSelected))
)
.filter(x => x.items.length > 0);
console.log(filteredFilters);
以上是关于过滤器数组中的数组,仅获取过滤后的项的主要内容,如果未能解决你的问题,请参考以下文章