在我的应用程序中,我有两个结构数组,我想从其中一个中删除公共项。我的结构:
struct PeopleSelectItem {
var name = ""
var id = ""
var added = false
}
我的阵列:
var people : [PeopleSelectItem] = []
var selectedPeople : [PeopleSelectItem] = []
我想从People数组中删除项,如果它们存在(按id比较)在selectedPeople数组上。
我尝试了几次数组过滤和转换为set,但都不起作用。我能在这里做些什么?
谢谢!
3条答案
按热度按时间46qrfjad1#
11dmarpk2#
如果您知道如果id相同,人们是平等的,那么您可以使您的结构符合
Equatable
协议,并且可以使用数组过滤器方法。w46czmvw3#
如果
people
可能有大量条目,则应考虑性能。因此,您应该使用SWIFT字典和相应的散列搜索来查找项目,而不是使用n^2算法进行搜索。如果
Id
对于people
是唯一的,那么我会将它们存储在如下的词典中:您可以轻松地将您拥有的数组转换为此词典:
有了这本词典,删除单个词条非常容易:
或者,要切换回
people
的阵列,只需说:备注
1.我假设,
selectedPeople
比所有people
的底数都小。如果不是这样,你应该在字典里填selectedPeople
。1.我有没有说过我喜欢这个Spark喜欢API?我想我是这样做的。
1.我只是从我的脑海中写出了那段代码。如果它在语法上不完全正确,请让我知道,我会改正它。