一尘不染

在数组中找到对象?

swift

Swift在Underscore.js中是否有类似_.findWhere的内容?

我有一个类型为struct的数组,T想检查array是否包含name属性等于的struct对象Foo

尝试使用find()filter()但它们仅适用于基本类型,例如StringInt。引发有关不符合Equitable协议之类的错误。


阅读 218

收藏
2020-07-07

共1个答案

一尘不染

FWIW,如果您不想使用自定义功能或扩展名,则可以:

let array = [ .... ]
if let found = find(array.map({ $0.name }), "Foo") {
    let obj = array[found]
}

name首先生成数组,然后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]
}
2020-07-07