swift 查找数组第一个匹配条件的元素

7 个解决方案

1、有一个版本的indexOf使用一个谓词闭包——使用它查找第一个本地源的索引(如果存在的话),然后在eventstore上使用该索引。

if let index = eventStore.sources.indexOf({ $0.sourceType == .Local }) {
let eventSourceForLocal = eventStore.sources[index]
}

2、扩展SequenceType
extension SequenceType {
func find(@noescape predicate: (Self.Generator.Element) throws -> Bool) rethrows -> Self.Generator.Element? {
for element in self {
if try predicate(element) {
return element
}
}
return nil
}
}

let eventSourceForLocal = eventStore.sources.find({ $0.sourceType == .Local })

3、let local = eventStore.sources.first(where: {0.sourceType == .Local}) 4、let local = eventStore.sources.filter{0.sourceType == .Local}.first
5、let arr = [0,1,2,3]
let result = arr.lazy.map{return 0}.first(where: {0 == 2})
6、public extension Sequence {
func find(predicate: (Iterator.Element) throws -> Bool) rethrows -> Iterator.Element? {
for element in self {
if try predicate(element) {
return element
}
}
return nil
}
}

7、if let firstMatch = yourArray.first(where: {$0.id == lookupId}) {
print("found it: (firstMatch)")
} else {
print("nothing found :(")
}

转自:https://www.itdaan.com/blog/2015/11/19/38d85f65e896aa6a557ec7c2574717ee.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。