在Swift中使用属性和Map过滤自定义对象的数组

我的模型课如下:

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 ,但是,我想知道如何为自定义对象数组实现高阶函数。>

wstsxaiyun 回答:在Swift中使用属性和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个元素时,它会急剧地变慢。需要对其进行调整以在较大的阵列上获得良好的性能。

本文链接:https://www.f2er.com/3017709.html

大家都在问