Error[8]: Undefined offset: 3, File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 121
File: /www/wwwroot/outofmemory.cn/tmp/plugin_ss_superseo_model_superseo.php, Line: 473, decode(

概述我有一个条目列表,它有一个id,我想将它们过滤到一个entry.id匹配selectedIDs中的一个id的条目.有没有办法用过滤器或我必须使用for循环? struct Entry { let id: String}var allEntries = [Entry]()var selectedIDs = [String] 例如 allEntries = [Entry(id: "1") 我有一个条目列表,它有一个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 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 – 使用数组过滤数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

)
File: /www/wwwroot/outofmemory.cn/tmp/route_read.php, Line: 126, InsideLink()
File: /www/wwwroot/outofmemory.cn/tmp/index.inc.php, Line: 166, include(/www/wwwroot/outofmemory.cn/tmp/route_read.php)
File: /www/wwwroot/outofmemory.cn/index.php, Line: 30, include(/www/wwwroot/outofmemory.cn/tmp/index.inc.php)
Swift 4 – 使用数组过滤数组_app_内存溢出

Swift 4 – 使用数组过滤数组

Swift 4 – 使用数组过滤数组,第1张

概述我有一个条目列表,它有一个id,我想将它们过滤到一个entry.id匹配selectedIDs中的一个id的条目.有没有办法用过滤器或我必须使用for循环? struct Entry { let id: String}var allEntries = [Entry]()var selectedIDs = [String] 例如 allEntries = [Entry(id: "1") 我有一个条目列表,它有一个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 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 – 使用数组过滤数组所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/999751.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-21
下一篇 2022-05-21

发表评论

登录后才能评论

评论列表(0条)

保存