过滤子数组对象

时间:2018-12-17 13:44:37

标签: javascript

我要过滤FlatListreact-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"}]))

1 个答案:

答案 0 :(得分:1)

您可以这样做:

items.filter(item => item.tags
  .some(tag => selectedTags
    .map(selectedTag => selectedTag.name)
    .includes(tag.name)));