我要过滤FlatList
中react-native
中的数据,
我有几个过滤器,
第一个是一个简单的单词,第二个是过滤器(与上一个过滤器无关)一个标签列表(数组)。
数据
Array [
Object {
"ID": 1,
"name": "Name 1",
"tags": Array [
Object {
"ID": 1,
"name": "tag 1",
},
Object {
"ID": 2,
"name": "tag 2",
},
],
},
Object {
"ID": 2,
"name": "Name 2",
"tags": Array [
Object {
"ID": 1,
"name": "tag 1",
},
],
},
]
React Native组件
searchedText = "string"
效果很好&selectedTags = []
类似于上述键tags
<FlatList
data={
filterType === null ? items
: filterType === "text" ? items.filter(item => item.name.includes(searchedText))
: filterType === "tags" ? items.filter(item => item.tags.includes(selectedTags))
: null
}
keyExtractor={( item ) => item.ID.toString() }
renderItem={ ({ item }) => <AnotherComponent item={ item }/> }
/>
我不知道该如何深入研究,您有解决方案来过滤所选标签吗?
赞:
items.filter(item => item.tags.includes([{name:"tag1"},{name:"tag2"}]))
答案 0 :(得分:1)
您可以这样做:
items.filter(item => item.tags
.some(tag => selectedTags
.map(selectedTag => selectedTag.name)
.includes(tag.name)));