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 selectedEntrIEsvar selectedEntrIEs = [Entry(ID: "1"),Entry(ID: "3")]解决方法 Rakesha Shastri的答案没有错.出于性能原因,您可能希望将selectedID设置为Set而不是Array:
let allEntrIEs = [Entry(ID: "1"),Entry(ID:"4")]let selectedIDs: Set<String> = ["1","3"]let selectedEntrIEs = allEntrIEs.filter({ selectedIDs.contains(.ID) })
原因是搜索数组具有O(n)的计算复杂度,其中n是数组的长度,而搜索Set(即散列表)的平均值是O(1).
>如果将selectedID保留为数组,则整体解决方案的复杂度为O(n * m),其中n和m分别是selectedIDs和allEntrIEs的长度.
>如果使用Set,则总体复杂度降低到O(m).
话虽如此,你的例子对于任何一种方法来说都是微不足道的.
总结以上是内存溢出为你收集整理的Swift 4 – 使用数组过滤数组全部内容,希望文章能够帮你解决Swift 4 – 使用数组过滤数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)