Swift 在 Underscore.js 中有类似_.findWhere的东西吗?
我有一个类型的结构数组,T并想检查数组是否包含其name属性等于的结构对象Foo。
T
name
Foo
尝试使用find(),filter()但它们仅适用于原始类型,例如Stringor 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] }