【问题标题】:Swift sort an ArraySwift 对数组进行排序
【发布时间】:2018-06-06 08:18:24
【问题描述】:

我想对数组进行排序

像这样:

let elements = ["S","A","C","C","T","E","E","E","F","S","S","A","A","C"]

我试过这样做

var currentElement = ""
var newElements:[String] = []
for element in elements {
    if currentElement != element{
        currentElement = element
        newElements.append(element)
    }
}

但是print["S", "A", "C", "T", "E", "F", "S", "A", "C"]

如何将此排序为["A","C","E","F","S","T"]

【问题讨论】:

标签: swift algorithm


【解决方案1】:
let elements = ["S","A","C","C","T","E","E","E","F","S","S","A","A","C"]

let sortedElements = elements.sorted(by: {$0 < $1})

print(sortedElements)

打印:

["A", "A", "A", "C", "C", "C", "E", "E", "E", "F", "S", "S", "S", "T"]

【讨论】:

    【解决方案2】:

    您要做的是删除重复项然后对其进行排序,对吗?

    您可以将其转换为Set,然后调用sorted()

    let elements = ["S","A","C","C","T","E","E","E","F","S","S","A","A","C"]
    let newElements = Set(elements).sorted() // ["A", "C", "E", "F", "S", "T"]
    

    【讨论】:

    • 你救了我的命谢谢!!
    【解决方案3】:

    您应该使用 ComparisonResult 来按字母顺序对数组进行排序,因为 Set(elements).sorted() 并且您有小写字符,排序结果将是错误的。

    var elements = ["S","A","C","C","T","E","E","E","F","S","S","A","A","C"]
    
    elements = elements.sorted { $0.localizedCaseInsensitiveCompare($1) == ComparisonResult.orderedAscending }
    
    //the output["A", "A", "A", "C", "C", "C", "E", "E", "E", "F", "S", "S", "S", "T"]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-02-23
      • 2014-07-28
      • 2015-04-17
      • 1970-01-01
      相关资源
      最近更新 更多