arrays - 通过匹配另一个数组中元素的属性从数组中删除元素
问题描述
我有两个数组:
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", ...),
解决方案
你可以filter
用来检查一个对象不在另一个数组中
let out = sessionsToDisplayTemp.filter {data in
!sessionsToDisplay.contains {$0.startTime == data.startTime}
}
或者如果您想直接删除它们
sessionsToDisplayTemp.removeAll { data in
sessionsToDisplay.contains {data.startTime == $0.startTime}
}
推荐阅读
- convex-optimization - 如何判断函数是非凸的还是凸的
- python - Response.url 和引用 url scrapy
- c# - 如何在 PDB 中嵌入 C# 源代码进行调试?
- spring-boot - Spring-boot BOM 不包含对 tomcat-dbcp 的依赖项
- javascript - 多余的if语句?
- grafana - 如何从其他唯一标签中计算标签
- javascript - 如何从节点中的变量中获取特定键
- python - Flink Kafka Table API for python with JAAS
- python - 我应该如何将这些列表放在一起?
- list - Agda 标准库列表最大值