jquery陣列 排序

2022-05-06 10:51:10 字數 1560 閱讀 5618

html:

12 

34

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:

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 show5 34 show6 jquery var animals dog cat tiger pig bird show5 html animals.join animals animals.sort show6 html animals.join 顯示結果 字串陣列排序前 dog...

jQuery對JSON陣列的簡單排序

th 員工工號 th th 員工姓名 th th 員工年齡 th tr table table class grid table id tableb border 1 tr th 員工工號 th th 員工姓名 th th 員工年齡 th tr table table class grid tabl...