第一次寫這個,算是記錄自己的學習前端的一點點的歷程吧。今天在做一個圖片的隨機排序遇到了一個問題,部分截圖如下
我用的是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哈哈~