jquery陣列 sort 排序

2022-06-28 21:03:11 字數 1807 閱讀 9405

html:

12

"show5

">34"

show6

">

jquery:

var animals = ['

dog','

cat','

tiger

','pig

','bird'];

$('#show5

').html(animals.join('

'));

animals =animals.sort();$('

#show6

').html(animals.join('

'));

顯示結果:

字串陣列排序前

dogcat

tiger

pigbird

排序後bird

catdog

pigtiger

如果陣列換成了數值陣列呢?結果會什麼怎麼樣的?

如下:html:

"

show7

">

"show8

">

jquery:

ar nums = ['

12','

2','

5','

36','4'

];$(

'#show7

').html(nums.join('

'));

nums =nums.sort();$('

#show8

').html(nums.join('

'));

顯示結果:

數值陣列排序前122

5364排序後122

3645

很明顯,數值陣列最後的排序結果不是我們想要的。這是為什麼呢?

因為sort()方法排序,是基於ascii值進行排序的。故它會認為36小於4(因為3的ascii值小於4的ascii值)。所以要對排序的sort()方法定義乙個比較函式:

jquery:

ar nums = ['

12','

2','

5','

36','4'

];$(

'#show7

').html(nums.join('

'));

//定義了sort的比較函式

nums =nums.sort(function(a,b));$('

#show8

').html(nums.join('

'));

顯示結果:

數值陣列排序前122

5364排序後24

51236

這才是我想要的結果!

知識點:

1,sort(function(a,b))對傳入的一對值進行比較,然後返回的的值為:小於0,大於0,等於0;(大於0交換位置,反之則不)

* 當小於0時,說明b>a,故b的排序靠後(即不變).

* 當大於0時,說明a>b,故a的排序靠後.

* 當等於0時,說明a=b,故不改變排序.

如果對數值陣列的值進行降序排序。那麼只要把返回的值改為b-a!

jquery 陣列sort 排序

排序前 var animals dog cat tiger pig bird 排序後animals animals.sort show6 html animals.join bird catdog pigtiger排序前 var ar nums 12 2 5 36 4 排序後nums nums.so...

Jquery的排序方法sort

html 12 34 jquery var animals dog cat tiger pig bird show5 html animals.join animals animals.sort show6 html animals.join 顯示結果 字串陣列排序前 dogcat tiger pi...

js 陣列排序函式sort

arrayobj.sort sortfunction 引數 sortfunction 可選項。是用來確定元素順序的函式的名稱。如果這個引數被省略,那麼元素將按照 ascii 字元順序進行公升序排列。sort 方法將 array 物件進行適當的排序 在執行過程中並不會建立新的 array 物件。如果為...