Arrays 删除多个arraylist swift中的重复项 扩展数组,其中元素:可哈希{ func removeDups()->[元素]{ var uniquedElements=Set() 返回筛选器{uniquedElements.insert($0.inserted} } }
我想要这种类型的输出-[AP,84135,AS,84135,BR,84135]由于您有3个不同的Arrays 删除多个arraylist swift中的重复项 扩展数组,其中元素:可哈希{ func removeDups()->[元素]{ var uniquedElements=Set() 返回筛选器{uniquedElements.insert($0.inserted} } },arrays,swift,Arrays,Swift,我想要这种类型的输出-[AP,84135,AS,84135,BR,84135]由于您有3个不同的数组,您需要首先将它们组合起来,使用zip(::)和map(:)获得数组,即 extension Array where Element : Hashable { func removeDups() -> [Element] { var uniquedElements = Set<Element>() return filter { uniqu
数组
,您需要首先将它们组合起来,使用zip(::)
和map(:)
获得数组
,即
extension Array where Element : Hashable {
func removeDups() -> [Element] {
var uniquedElements = Set<Element>()
return filter { uniquedElements.insert($0).inserted }
}
}
var arr = zip(brachNames, zip(overAllTaget, overAllSold)).map { [$0.0, $0.1.0, $0.1.1] }
现在,使用Set
过滤掉重复项。然后使用flatMap(:)
获得单个结果
数组
,即
extension Array where Element : Hashable {
func removeDups() -> [Element] {
var uniquedElements = Set<Element>()
return filter { uniquedElements.insert($0).inserted }
}
}
var arr = zip(brachNames, zip(overAllTaget, overAllSold)).map { [$0.0, $0.1.0, $0.1.1] }
注意:
集合
是无序的。因此,结果的顺序可能会改变。另一种方法是使用所需字段(brachName、overallTarget、OverallSeld)创建一个结构,遵守Hashable
,并应用如下内容:
这样,如果这很重要的话,您可以保持顺序。最好使用自定义类型的数组,而不是3个不同的数据数组,这样代码更清晰,并且在访问数据时避免简单的错误。下面是使用struct
保存数据的此类解决方案的示例
let result = Array(Set(arr)).flatMap{ $0 } //["AP", "84", "135", "AS", "84", "135", "BR", "84", "135"]
还是更直接的方法
extension BranchData {
var propertyArray: [String] {
[branchName, String(overallTarget), String(overallSold)]
}
}
let output = set.flatMap { $0.propertyArray }
我没有命令。另外,为什么你有3个数组,而它似乎是链接数据(AP使用84和135)?太好了。如果有帮助,一定要接受(在左边打勾)。快乐编码
let output = set.flatMap { [$0.branchName, $0.overallTarget, $0.overallSold] }