sort()
方法用於對陣列的元素進行排序,並返回陣列。預設排序順序是根據字串unicode
碼點。
語法:arrayobject.sort(sortby);引數sortby可選。規定排序順序。必須是函式。
注:如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。要實現這一點,首先應把陣列的元素都轉換成字串(如有必要),以便進行比較。
如果想按照其他標準進行排序,就需要提供比較函式,該函式要比較兩個值,然後返回乙個用於說明這兩個值的相對順序的數字。比較函式應該具有兩個引數 a 和 b,其返回值如下:
若 a 小於 b,在排序後的陣列中 a 應該出現在 b 之前,則返回乙個小於 0 的值。
若 a 等於 b,則返回 0。
若 a 大於 b,則返回乙個大於 0 的值。
例1:我們將建立乙個陣列,並按字母順序進行排序:
輸出:
george,john,thomas,james,adrew,martin例2:我們將建立乙個陣列,並按字母順序進行排序:adrew,george,james,john,martin,thomas
輸出:
10,5,40,25,1000,1請注意,上面的**沒有按照數值的大小對數字進行排序,要實現這一點,就必須使用乙個排序函式:1,10,1000,25,40,5
輸出:
10,5,40,25,1000,1這裡可以看出,如果安裝公升序排列,那麼方法為:1,5,10,25,40,1000
functionsortnumber(a,b)如果是按照降序排列則為:
functionsortnumber(a,b)當然如果想根據陣列物件中的某個屬性值進行排序呢?
sort
方法接收乙個函式作為引數,這裡巢狀一層函式用來接收物件屬性名,其他部分**與正常使用sort
方法相同。
var arr =[,,結果如圖所示:];functioncompare(property)
}console.log(arr.sort(compare('age')))
如何根據引數不同,來確定是公升序排列,還是降序排序呢?
sortby: function(attr,rev)else使用方式:return function(a,b)
if(a >b)
return 0;}}
newarray.sort(sortby('number',false))v8 引擎 sort 函式只給出了兩種排序 insertionsort 和 quicksort,數量小於10的陣列使用 insertionsort,比10大的陣列則使用 quicksort。
v8 引擎array原始碼 710行開始
js中sort()方法的用法,引數以及排序原理
sort 方法用於對陣列的元素進行排序。語法 arrayobject.sort sortby 引數sortby可選。規定排序順序。必須是函式。注 如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序進行排序。要實現這一點,首先應把陣列的元素都轉換成字串...
JS中sort 方法的用法,引數以及排序原理
sort 方法用於對陣列的元素進行排序,並返回陣列。預設排序順序是根據字串unicode碼點。語法 arrayobject.sort sortby 引數sortby可選。規定排序順序。必須是函式。注 如果呼叫該方法時沒有使用引數,將按字母順序對陣列中的元素進行排序,說得更精確點,是按照字元編碼的順序...
js中的sort方法
js中原生的sort 採用快排和插入排序演算法,根據比較器對陣列排序。預設是將陣列元素轉為字串,然後根據unicode字符集編號的大小排序。charcodeat index 返回指定位置字元的 unicode 編號,取值是 0 65535 間的整數,與 charat 方法執行的操作相似,後者返回的是...