jquery數組(sort() 排序)

HTML:html

1 <h3>字符串數組排序前</h3>
2 <div id="show5"></div>
3 <h3>排序後</h3>
4 <div id="show6"></div>

jquery:jquery

var animals = ['dog','cat','tiger','pig','bird'];
$('#show5').html(animals.join('<br/>'));

          
animals = animals.sort();
$('#show6').html(animals.join('<br/>'));

顯示結果:數組

字符串數組排序前
dog
cat
tiger
pig
bird
排序後
bird
cat
dog
pig
tiger

若是數組換成了數值數組呢?結果會什麼怎麼樣的?函數

以下:spa

HTML:code

<h3>數值數組排序前</h3>
<div id="show7"></div>
<h3>排序後</h3>
<div id="show8"></div>

jquery:htm

ar nums = ['12','2','5','36','4'];
$('#show7').html(nums.join('<br/>'));
       
nums = nums.sort();
$('#show8').html(nums.join('<br/>'));

顯示結果:blog

數值數組排序前
12
2
5
36
4
排序後
12
2
36
4
5

很明顯,數值數組最後的排序結果不是咱們想要的。這是爲何呢?
由於sort()方法排序,是基於ASCII值進行排序的。故它會認爲36小於4(由於3的ASCII值小於4的ASCII值)。因此要對排序的sort()方法定義一個比較函數:排序

jquery:字符串

ar nums = ['12','2','5','36','4'];
$('#show7').html(nums.join('<br/>'));

//定義了sort的比較函數
nums = nums.sort(function(a,b){
return a-b;
});

$('#show8').html(nums.join('<br/>'));

顯示結果:

數值數組排序前
12
2
5
36
4
排序後
2
4
5
12
36

這纔是我想要的結果!

知識點:

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

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

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

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

若是對數值數組的值進行降序排序。那麼只要把返回的值改成b-a!

相關文章
相關標籤/搜索