Removing duplicate elements from an array in Swift

后端 未结 30 2481
遥遥无期
遥遥无期 2020-11-22 00:07

I might have an array that looks like the following:

[1, 4, 2, 2, 6, 24, 15, 2, 60, 15, 6]

Or, reall

30条回答
  •  离开以前
    2020-11-22 00:54

    You can roll your own, e.g. like this:

    func uniq(source: S) -> [T] where S.Iterator.Element == T {
        var buffer = [T]()
        var added = Set()
        for elem in source {
            if !added.contains(elem) {
                buffer.append(elem)
                added.insert(elem)
            }
        }
        return buffer
    }
    
    let vals = [1, 4, 2, 2, 6, 24, 15, 2, 60, 15, 6]
    let uniqueVals = uniq(vals) // [1, 4, 2, 6, 24, 15, 60]
    

    And as an extension for Array:

    extension Array where Element: Hashable {
        var uniques: Array {
            var buffer = Array()
            var added = Set()
            for elem in self {
                if !added.contains(elem) {
                    buffer.append(elem)
                    added.insert(elem)
                }
            }
            return buffer
        }
    }
    

提交回复
热议问题