首页 > 解决方案 > Swift 4 - 用数组过滤数组

问题描述

我有一个条目列表,有一个 id,我想将它们过滤到那些 entry.id 与 selectedIDs 中的一个 id 匹配的条目。有没有办法用过滤器做到这一点,还是我必须使用 for 循环?

struct Entry {
    let id: String
}
var allEntries = [Entry]()
var selectedIDs = [String]

例如

allEntries = [Entry(id: "1"), Entry(id:"2"), Entry(id:"3"), Entry(id:"4")]
selectedIDs = ["1", "3"]

// return selectedEntries
var selectedEntries = [Entry(id: "1"), Entry(id: "3")]

标签: swiftswift4higher-order-functions

解决方案


allEntries根据是否selectedIDs包含过滤id

var allEntries = [Entry(id: "1"), Entry(id:"2"), Entry(id:"3"), Entry(id:"4")]
var selectedIDs = ["1", "3"]

var selectedEntries = allEntries.filter({ selectedIDs.contains($0.id) })

推荐阅读