最近在leetcode刷題的時候遇到一個排序問題以前一直都忽略了sort排序的原理,讓咱們看下w3c對於sort()的說明:
若是調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼
的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(若有必要),以便進行比較。
這樣就能夠解釋爲何[0,1,5,10,8]
的升序排列會是[0,1,10,5,8]
了數組
w3c對於參數的使用還有以下一段說明:
若是想按照其餘標準進行排序,就須要提供比較函數,該函數要比較兩個值,而後返回一個用於說明這兩個值的相對順序的數字。比較函數應該具備兩個參數 a 和 b,其返回值以下:函數
若 a 小於 b,在排序後的數組中 a 應該出如今 b 以前,則返回一個小於 0 的值。編碼
若 a 等於 b,則返回 0。spa
若 a 大於 b,則返回一個大於 0 的值。code
因此得出若是想要升序排列的話經過a-b就能夠實現 sort((a,b)=>a-b)
,反序也能夠經過這個來作到:排序