Swift在Underscore.js中是否有类似_.findWhere的内容?
我有一个类型为struct的数组,T想检查array是否包含name属性等于的struct对象Foo。
T
name
Foo
尝试使用find(),filter()但它们仅适用于基本类型,例如String或Int。引发有关不符合Equitable协议之类的错误。
find()
filter()
String
Int
Equitable
FWIW,如果您不想使用自定义功能或扩展名,则可以:
let array = [ .... ] if let found = find(array.map({ $0.name }), "Foo") { let obj = array[found] }
name首先生成数组,然后find从中生成数组。
find
如果阵列很大,则可能需要执行以下操作:
if let found = find(lazy(array).map({ $0.name }), "Foo") { let obj = array[found] }
或许:
if let found = find(lazy(array).map({ $0.name == "Foo" }), true) { let obj = array[found] }