Swift-Array数组去除重复元素
2020-11-01 本文已影响0人
文子飞_
方法一:
class func getModels() -> Array<MultTableModel> {
var tempArrays = Array<MultTableModel>()
for i in 0...20 {
let model = MultTableModel.modelWith(title: "title-哈哈😃 + \(i)", subTitle: "subTitle-哈哈😃 + \(i)")
model.id = i
if i == 8 || i == 9 || i == 10 {
tempArrays.append(model)
}
tempArrays.append(model)
}
// tempArrays去重复元素
var tempModel: MultTableModel?
var sameArrays: [MultTableModel] = []
// 1、tempArrays查找相同
for item in tempArrays {
if item === tempModel {
sameArrays.append(item)
}
tempModel = item
}
// 2、tempArrays移除相同
for sameItem in sameArrays {
let sameIndex = tempArrays.firstIndex { (tempItem) -> Bool in
return sameItem === tempItem
}
if let deleteIndex = sameIndex {
tempArrays.remove(at: deleteIndex)
}
}
return tempArrays
}
方法二:数组里必须是Struct结构体
struct MultTableModel: Hashable {
var title: String?
var subTitle: String?
var id = 0
var isSelect: Bool = false
init(title: String, subTitle: String) {
self.title = title
self.subTitle = subTitle
}
static func modelWith(title: String, subTitle: String) -> MultTableModel {
return self.init(title: title, subTitle: subTitle)
}
static func getModels() -> Array<MultTableModel> {
var tempArrays = Array<MultTableModel>()
for i in 0...20 {
var model = MultTableModel.modelWith(title: "title-哈哈😃 + \(i)", subTitle: "subTitle-哈哈😃 + \(i)")
model.id = i
if i == 8 || i == 9 || i == 10 {
tempArrays.append(model)
}
tempArrays.append(model)
}
tempArrays.removeDuplicates()
return tempArrays
}
}
//数组去重
extension Array where Element: Hashable {
func removingDuplicates() -> [Element] {
var addedDict = [Element: Bool]()
return filter {
addedDict.updateValue(true, forKey: $0) == nil
}
}
mutating func removeDuplicates() {
self = self.removingDuplicates()
}
}