如何在swift中通过另一个项目数组过滤项目数组

时间:2021-03-29 00:03:31

标签: swift array-filter

我有一个名为 Item 和 Tag 的模型。项目有多个标签。我需要通过另一个标签数组过滤项目数组。用于过滤器的标签由字符串数组给出。

我用谷歌搜索但找不到解决我的情况的答案。

struct Tag {
    let id: Int
    let name: String
}

struct Item {
    let id: Int
    let tags: [Tag]
}

func filter(items: [Item], contains tags: [String]) -> [Item] {
    // Need to implement filter
}

1 个答案:

答案 0 :(得分:1)

选择二选一的退货方式:

     func filter(items: [Item], contains tags: [String]) -> [Item] {
        items.filter { (item) -> Bool in
            let tagNames = item.tags.map({ $0.name })
            return tags.allSatisfy(tagNames.contains)
            return Set(tags).isSubset(of: Set(tagNames))
        }
    }
相关问题