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
- 使用 Swift 實現歸併排序Swift排序
- 12.MyBatis學習--對映檔案_引數處理_單個引數&多個引數&命名引數MyBatis
- 巨集定義跟多個引數
- bash shell指令碼接受多個引數指令碼
- exp和expdp的filesize引數的使用--匯出多個檔案
- Mybatis(五)--原始碼分析傳入單個list引數和多個list引數寫法MyBatis原始碼
- 一個排序引發的BUG排序
- 一個Java方法能使用多少個引數?Java
- swift tabview 帶引數請求網路。多條目展示。json解析,逃逸閉包SwiftViewJSON
- 4.2 函式的外部引數名 [Swift教程]函式Swift
- Swift 排序演算法Swift排序演算法
- Swift實現快速排序Swift排序
- SpringMVC中@RequestBody接收前端傳來的多個引數SpringMVC前端
- 15.MyBatis傳入多個引數的問題MyBatis
- Swift 呼叫 Objective-C 的可變引數函式SwiftObject函式
- mybatis基礎03(介面中的多個引數處理)MyBatis
- Swift交換兩個變數的值Swift變數
- Mybatis 傳入多個引數查詢資料 (3種方法)MyBatis
- SPSS實現多個獨立的樣本非引數檢驗SPSS
- 輸入多個編碼並支援模糊搜尋,引數是一個list
- 如何一條Mediainfo --Inform語句同時獲取視訊引數和音訊引數多個ParametersAIORM音訊
- vxe-table grid 使用服務端排序、多欄位排序服務端排序
- layer Tips引數使用
- 使用 Python 解析引數Python
- (譯)Effective Kotlin系列之遇到多個構造器引數要考慮使用構建器(二)Kotlin
- 排序策略 - Swift標準庫原始碼排序Swift原始碼
- 指標-n個數的排序指標排序
- Qt中多個原始檔中呼叫同一引數或物件等QT物件
- 經常提及的幾個js排序方法(氣泡排序、選擇排序、計數排序)JS排序
- SpringJpa @query 中根據傳入引數(欄位)排序Spring排序
- 使用 Swift 識別英文數字驗證碼Swift
- Angular 自定義結構化指令,如何傳入多個輸入引數Angular
- PHP陣列多個欄位分別排序PHP陣列排序
- 封裝一個強大的追加或更新多個Query引數並自動重新整理的JS方法,附加Query引數獲取封裝JS
- 計數排序vs基數排序vs桶排序排序