sort()排序曾經迷惑我。。。

不知道大家在學習sort()排序時候,解決它排序方式問題,會使用某種function,來進行調整。當我剛剛知道原理時,我瀕臨崩潰:媽的內置功能不早說,我還以為多高明呢!!!

當你使用sort()相對數組進行排序時,你會蒙圈的:

var a = [1,234,3,5,4,6,3,63,54,4,43,4];
console.log(a.sort());//1,234,3,3,4,4,4,43,5,54,6,63

這時,某大神告訴我,要這樣寫:

console.log(a.sort(function(v1,v2){
    return v1-v2;
}).join());//1,3,3,4,4,4,5,6,43,54,63,234

果然解決了,但是,為啥?我就冥思苦想,想了快半年了,也沒想出頭緒(這就跟給你張鳥腿的圖片,讓你猜什么鳥一樣嘛)

知道今天,我看到了這個,我的憤怒與自責。。。

sort內部使用快速排序,每次比較兩個元素大小的時候如果沒有參數,則直接判斷字母表,如果有參數,則把正在比較的兩個參數傳入自定義方法并調用(正在比較的兩個數會傳給自定義方法的v1、v2),如果返回值大于0表示v1 > v2,如果等于0,表示v1 = v2,如果小于0,表示v1 < v2,其實我們傳入的方法就是告訴sort怎么比較兩個元素誰大誰小,至于排序移動元素過程人家寫好了

試一下,果然,媽蛋。。。

console.log(a.sort(function(v1,v2){
    return v2-v1;
}).join());//234,63,54,43,6,5,4,4,4,3,3,1
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,932評論 18 139
  • 弗洛伊德算法適用于為圖中每一個頂點求最短路徑,思路如下 檢查圖中任何一個 到 任何另一個點能否通過第一個點降低最短...
    RichardW閱讀 969評論 0 1
  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,771評論 0 33
  • 數組 在程序語言中數組的重要性不言而喻,JavaScript中數組也是最常使用的對象之一,數組是值的有序集合,由于...
    南山碼農閱讀 211評論 0 0
  • 文/白萍 一路走來, 感受到人生的幸福與快樂; 也品嘗過生活的艱辛與曲折。 悠悠歲月, 我們卻依然還在演繹著它的更...
    悟姑娘閱讀 158評論 0 1