首页 > 解决方案 > 通过匹配另一个数组中元素的属性从数组中删除元素

问题描述

我有两个数组:

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", ...),

标签: arraysswift

解决方案


你可以filter用来检查一个对象不在另一个数组中

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

或者如果您想直接删除它们

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

推荐阅读