【发布时间】:2016-01-22 04:49:05
【问题描述】:
使用值数组根据对象的一个属性过滤对象数组的最有效方法是什么?我可以遍历这些项目,但我不禁想到使用 Array.filter 和 Array.contains 有一种非常有效的方法——我只是不够精通 Swift,无法将这些部分组合在一起。
例如,如果我有一个包含 Book 对象的数组,每个对象都有一个 String author 属性,我将如何过滤它以仅显示 John Smith、Arthur Price 或 David Jones 的书籍?
类似的东西:
Class Book {
var author : String = String()
}
var books : Array = [Book]()
//books added elsewhere
let authors = ["John Smith", "Arthur Price", "David Jones"]
let filteredBooks = books.filter({authors.contains({($0 as Book).author})})
【问题讨论】:
-
您需要最简单的方法还是最有效的方法?如果最有效,那么例如您需要首先准备数据并将数组转换为带有键的字典 - 搜索字段和值 -
Book对象。执行此操作后,您的搜索将是最有效的 -
@Alex,你会如何将该方法应用于我刚刚添加的命令?
-
您正在使用数组,在这种情况下,搜索可能不会尽可能快,要使其尽可能快,您需要使用字典。如果您需要快速搜索,请参阅下面来自 Arsen 的答案,我的意思有一个示例
标签: arrays swift filter contains