關於js中sort()排序方法


  第一次寫這個,算是記錄自己的學習前端的一點點的歷程吧。今天在做一個圖片的隨機排序遇到了一個問題,部分截圖如下

我用的是json格式存儲數組,想通過排序實現img數組中的內容升序或是降序發現用sort自帶的方法不行,w3school上的原話是:sort() 方法用於對數組的元素進行排序,arrayObject.sort(sortby)  (記住sort方法排序改變的是原有的數組不生成副本)如果調用該方法時沒有使用參數,將按字母順序(Ascall編碼)對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行比較。如果要想進行升序或是降序排序的話,要提供比較函數。

比較函數應該具有兩個參數 a 和 b,其返回值如下:

  • 若 a 小於 b,在排序后的數組中 a 應該出現在 b 之前,則返回一個小於 0 的值。
  • 若 a 等於 b,則返回 0。
  • 若 a 大於 b,則返回一個大於 0 的值。

什么意思呢,默認a,b兩個參數 若是 a-b 若是 小於 0則 a前b后 ,大於0 則 a后b前。 

                     若是b-a  若是 小於0 則 a前b后 ,大於0 則 a后b前。

通過調試發現默認情況下,a-b時 a的值都是比b小(隨機出現) 故會出現升序情況 故返回值都是小於0的

                                       b-a時 b的值都是比a大,故會出現降序情況 故返回值都是大於0的

下面附上調試截圖:

b-a降序情況下

a-b升序序情況下

 

總結一下就是:隨機選取的a,b兩個值通常情況下,都是a的值比b小,排序規則是根據返回值,小於0則 升序 大於0 則降序,

                     第一參數a, 第二參數b ------  a-b升序   b-a降序。

如有問題,歡迎指出,第一次寫累死了O(∩_∩)O哈哈~


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM