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()
    }
}
上一篇下一篇

猜你喜欢

热点阅读