小编典典

在数组中找到一个对象?

all

Swift 在 Underscore.js
中有类似_.findWhere的东西吗?

我有一个类型的结构数组,T并想检查数组是否包含其name属性等于的结构对象Foo

尝试使用find()filter()但它们仅适用于原始类型,例如Stringor
Int。抛出关于不符合Equitable协议或类似的错误。


阅读 71

收藏
2022-08-20

共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]
}
2022-08-20