我的模型课如下:
struct Job: Decodable, Equatable, Hashable {
var id: Int?
var status: String?
var priority: String?
}
我有2个对象数组(工作)为:
var jobModel = [Job]()
var filteredJobModel = [Job]()
案例:jobModel
有5个要素。filteredJobModel
有2个元素(的子集jobModel
)。在中filteredJobModel
,status
两个对象的值已通过search
操作更改。我想用来更新jobModel
背面filteredJobModel
,其中对象与id
属性匹配。
有什么办法可以解决这个问题?我本可以对[String]使用filter&map,但是,我想知道如何为自定义对象数组实现高阶函数。
for (index, job) in idsJobModel.enumerated() {
if let match = arrFiltetered.first( where: {job.id == $0.id} ) {
idsJobModel[index] = match
}
}
或者,如果您更喜欢使用地图:
idsJobModel = idsJobModel.map {
let myID = $0.id
if let match = arrFiltetered.first( where: {myID == $0.id} ) {
return match
} else {
return $0
}
}
上面的代码的任何一个版本都将具有O(n²)
性能,因此当您的数组变得大于≈30个元素时,它的运行速度将大大降低。需要对其进行调整,以使其在较大的阵列上表现良好。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句