Swift 排序之sort函數(shù)

前言

在OC中對(duì)一個(gè)數(shù)組排序,以及字典的排序往往都是自己寫(xiě)一個(gè)函數(shù)去實(shí)現(xiàn)。swift中就不用再自己再去做這樣的事了。Swift提供了sort函數(shù),可以讓數(shù)組和字典很方便的實(shí)現(xiàn)排序。

簡(jiǎn)單使用

降序
let a = ["2","1","3"]
let t = a.sort { (s1, s2) -> Bool in
    return s1 > s2
}
print("\(t)")//打印結(jié)果:["3", "2", "1"]
升序
let a = ["2","1","3"]
let t = a.sort { (s1, s2) -> Bool in
    return s1 < s2
}
print("\(t)")//打印結(jié)果:["1", "2", "3"]

但是這就完了嗎?
嘿嘿,下面我們讓代碼進(jìn)化(以下只以升序?yàn)槔?/p>

進(jìn)化版

let a = ["2","1","3"]
let t = a.sort{$0<$1}
print("\(t)")//打印結(jié)果:["1","2","3"]

瞬間提升一個(gè)檔次,瞬間感覺(jué)高大上,$0,$1這是什么鬼???其實(shí)在Swift中閉包參數(shù)是可以缺省的,可以直接省略參數(shù)類(lèi)型和參數(shù)名,用$0代表閉包的第一個(gè)參數(shù),$1代表閉包的第二個(gè)參數(shù)......以此類(lèi)推。同時(shí)也可以省略in關(guān)鍵字。

但是。。。這完了嗎?
嘿嘿嘿嘿嘿,下面看下究極進(jìn)化

究極進(jìn)化版

let a = ["2","1","3"]
let t = a.sort(<)
print("\(t)")//打印結(jié)果:["1","2","3"]

我X,代碼可以省略到這種程度。你是不是已經(jīng)蠢蠢欲動(dòng),想要敲一遍代碼自己試驗(yàn)一下了。

Dictionary版

基礎(chǔ)版

1.根據(jù)key排序

let dic = ["1":"c","3":"a","2":"b"]
let result = dic.sort { (str1, str2) -> Bool in
    return str1.0 < str2.0
}
print(result)//打印結(jié)果:[("1", "c"), ("2", "b"), ("3", "a")]

2.根據(jù)value排序

let dic = ["1":"c","3":"a","2":"b"]
let result = dic.sort { (str1, str2) -> Bool in
    return str1.1 < str2.1
}
print(result)//打印結(jié)果:[("1", "c"), ("2", "b"), ("3", "a")]

升級(jí)版

1.根據(jù)key排序

let dic = ["1":"a","3":"c","2":"b"]
let result = dic.sort {$0.0 < $1.0}
print(result)//打印結(jié)果:[("1", "a"), ("2", "b"), ("3", "c")]

2.根據(jù)value排序

let dic = ["1":"a","3":"c","2":"b"]
let result = dic.sort {$0.1 < $1.1}
print(result)//打印結(jié)果:[("1", "a"), ("2", "b"), ("3", "c")]

這里不能直接用">"或者"<"

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容