我有一个名为 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
}
答案 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))
}
}