通过匹配另一个数组中元素的属性从数组中删除元素

时间:2019-02-17 19:34:26

标签: arrays swift

我有两个数组:

var sessionsToDisplay : [SessionData]
var sessionsToDisplayTemp : [SessionData]

SessionData类具有startTime属性。因此,如果第一个sessionToDisplay数组包含以下项:

SessionData(startTime: "08:00", ...),
SessionData(startTime: "10:30", ...),
SessionData(startTime: "13:30", ...),
SessionData(startTime: "16:00", ...),

sessionsToDisplayTemp包含以下内容:

SessionData(startTime: "06:30", ...),
SessionData(startTime: "16:00", ...),
SessionData(startTime: "12:30", ...),
SessionData(startTime: "15:30", ...),
SessionData(startTime: "08:00", ...),

我必须从sessionsToDisplayTemp中删除元素,该元素的startTime已经在第一个数组中了。因此结果应该是包含以下元素的数组:

SessionData(startTime: "06:30", ...),
SessionData(startTime: "12:30", ...),
SessionData(startTime: "15:30", ...),
SessionData(startTime: "08:00", ...),

1 个答案:

答案 0 :(得分:1)

您可以使用filter来检查一个对象是否不在另一个数组中

let out = sessionsToDisplayTemp.filter {data in
    !sessionsToDisplay.contains {$0.startTime == data.startTime}
}

或者如果您想直接将其删除

sessionsToDisplayTemp.removeAll { data in
    sessionsToDisplay.contains {data.startTime == $0.startTime}
}