iOS 的那些事儿Swift

swift sorted 排序函数

2017-01-02  本文已影响1843人  冰霜海胆

swift 提供了便捷的快速排序数组、字典的函数 sorted( )
所有操作都在 swift 3.0 下完成

1. 数组排序

e.g. 给一个顺序杂乱的数组升序或降序排列其中的元素

let array = [6, 4, 5, 3, 1, 0, 2]

> 降序

array.sorted { (s1, s2) -> Bool in
    return s1 > s2
}

> 升序

array.sorted { (s1, s2) -> Bool in
    return s1 < s2
}

在 swift 中还可以通过简写的形式来书写升序降序
$0 来表示闭包的第一个参数,$1 来表示第二个,以此类推,in 也可以省略

array.sorted{$0 > $1}
array.sorted{$0 < $1}

// 还可以直接省略参数
// 升序
array.sorted(by: <)
// 降序
array.sorted(by: >)

2. 字典排序

let dict = ["1": "a", "3": "c", "2": "b", "5": "e", "4": "d", "6": "f"]

> 根据 key 排序

str.0str.1 的意思是:元组 **(key: String, value: String) 第0个是 key,第一个是 value **
从 **sorted **的函数定义可以看出来

dict.sorted { (<#(key: String, value: String)#>, <#(key: String, value: String)#>) -> Bool in
    <#code#>
}
let result3 = dict.sorted { (str1, str2) -> Bool in
    return str1.0 < str2.0
}

> 根据 value 排序

let result4 = dict.sorted { (str1, str2) -> Bool in
    return str1.1 < str2.1
}

> 简化:与数组的简化类似

// 根据 key
dict.sorted{$0.0 < $1.0}
// 根据 value
dict.sorted{$0.1 < $1.1}

// 进一步省略参数
dict.sorted(by: <)
dict.sorted(by: >)
上一篇下一篇

猜你喜欢

热点阅读