Swift 使用lexicographicallyprecedes 多個引數排序
有時候我們需要用兩個或者三個引數進行,排序比較。
lexicographicallyprecedes函式介紹
lexicographicallyprecedes可以看下蘋果官方文件的介紹。
這裡簡單說一下:
func lexicographicallyPrecedes<OtherSequence>(_ other: OtherSequence) -> Bool where OtherSequence : Sequence, Self.Element == OtherSequence.Element
返回一個布林值,該值使用小於操作符(<)比較元素,指示該序列是否在詞典(字典)排序中的另一個序列之前。
我們看原始碼可以看出,這個函式的功能,是兩個Sequence的比較。具體怎麼比較實現方法,應該和我們手動寫方法挨個比較一樣。
多條件排序
然後我們就可以這樣寫多條件排序了,我們把多個屬性做成序列對比即可。
先看下演示效果
Demo程式碼:
struct people{
var lastName:String?
var fristName:String?
}
var persons = [people.init(lastName: "c", fristName: "120"),people.init(lastName: "a", fristName: "BBB"),people.init(lastName: "b", fristName: "110"),people.init(lastName: "a", fristName: "AAA")]
let new = persons.sorted { p0, p1 in
let left = [p0.lastName,p0.fristName]
let right = [p1.lastName,p1.fristName]
return left.lexicographicallyPrecedes(right){
$0?.localizedCaseInsensitiveCompare($1!) == .orderedAscending
}
}
相關文章
- Mybatis parameterType 傳入多個引數的使用MyBatis
- Swift: 可變引數Swift
- mybatis 傳入多個引數MyBatis
- MyBatis傳入多個引數MyBatis
- mybatis 傳遞多個引數 --解決mybatis查詢使用多個引數方法--javabean傳統方法和map方法MyBatisJavaBean
- 12.MyBatis學習--對映檔案_引數處理_單個引數&多個引數&命名引數MyBatis
- 使用 Swift 實現堆排序Swift排序
- 使用 Swift 實現歸併排序Swift排序
- Swift學習筆記(三十三)——常量引數,變數引數和inout引數Swift筆記變數
- bash shell指令碼接受多個引數指令碼
- exp和expdp的filesize引數的使用--匯出多個檔案
- GridView CommandArgument傳遞多個引數View
- MyBatis傳入多個引數的問題MyBatis
- Mybatis(五)--原始碼分析傳入單個list引數和多個list引數寫法MyBatis原始碼
- Swift語言中為外部引數設定預設值可變引數常量引數變數引數輸入輸出引數Swift變數
- 資料結構 桶排序 基數排序MSD c++ swift 版本資料結構排序C++Swift
- Swift 1.1語言函式引數的特殊情況本地引數名外部引數名Swift函式
- 一個Java方法能使用多少個引數?Java
- Silverlight之Frame傳遞多個引數並獲取完整引數
- 一個排序引發的BUG排序
- 遇到多個構造器引數時考慮使用構建器(Effective Java )Java
- 15.MyBatis傳入多個引數的問題MyBatis
- ASP.NET 標記href傳遞多個引數ASP.NET
- 4.2 函式的外部引數名 [Swift教程]函式Swift
- performSelector支援多引數performSelector
- win下使用expdp的enclude引數時一個物件和多個物件的幾種寫法!物件
- swift tabview 帶引數請求網路。多條目展示。json解析,逃逸閉包SwiftViewJSON
- Swift實現快速排序Swift排序
- Swift 排序演算法Swift排序演算法
- SpringMVC中@RequestBody接收前端傳來的多個引數SpringMVC前端
- mybatis基礎03(介面中的多個引數處理)MyBatis
- Mybatis傳遞多個引數的4種方式(乾貨)MyBatis
- iOS之@selector的函式傳遞多個引數iOS函式
- UIButton addTarget:self action:@selector() 傳多個引數UI
- 在多個JSP頁面之間傳遞引數JS
- Swift學習筆記(三十二)——可變引數Swift筆記
- 排序演算法-N個正整數排序排序演算法
- Swift 中隨機數的使用Swift隨機