美文网首页
Swift-Array数组去除重复元素

Swift-Array数组去除重复元素

作者: 文子飞_ | 来源:发表于2020-11-01 22:19 被阅读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()
        }
    }
    

    相关文章

      网友评论

          本文标题:Swift-Array数组去除重复元素

          本文链接:https://www.haomeiwen.com/subject/alouvktx.html