extension Array where Element : Equatable {
public mutating func mergeElements<C : Collection>(newElements: C) where C.Iterator.Element == Element{
let filteredList = newElements.filter({!self.contains($0)})
self.append(contentsOf: filteredList)
}
}
extension Array where Element : Equatable{
public mutating func mergeElements<C : Collection>(newElements: C) where C.Generator.Element == Element{
let filteredList = newElements.filter({!self.contains($0)})
self.append(contentsOf: filteredList)
}
}
extension Array where Element : Equatable{
public mutating func mergeElements<C : CollectionType where C.Generator.Element == Element>(newElements: C){
let filteredList = newElements.filter({!self.contains($0)})
self.appendContentsOf(filteredList)
}
}
7条答案
按热度按时间5ssjco0h1#
简单地说:
nlejzf6q2#
Swift 5已更新
如果您需要合并多个数组。
用法示例:
1.
i7uaboj43#
这通常称为union,在Swift中可以使用
Set
:然后,您可以将集合转换为数组:
hfyxw5xn4#
Swift 4.0版本
如前所述:传递给函数的数组是将从最终数组中省略的对象的数组
ztyzrc3y5#
Swift 3.0版本的已接受答案。
**注意:**这里值得一提的是,传递给函数的数组是将从最终数组中省略的对象数组。如果您合并的对象数组中
Equatable
属性可能相同,但其他属性可能不同,则这一点很重要。b1uwtaje6#
可以创建一个数组扩展来完成此操作。
当然,这只对
Equatable
元素有用。2j4z5cfb7#
我将Sequence和Array的扩展与this answer结合起来,以便在通过单个属性将数组与自定义对象合并时提供简单的语法:
测试项目: