Jquery的排序方法sort

2021-09-19 11:21:24 字數 1850 閱讀 5930

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!

個人覺得這個方法包含了排序演算法的實現過程

如此類**:

// 公升序

function updata(idx,ele));

$('#listcon').html(domlist);

} // 降序

function downdata(idx,ele));

$('#listcon').html(domlist);

}

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...

Sort 排序方法

1.在w3c裡面的例子是這樣的 這種是按照字母順序進行排序的 2.但是對於數字的排序,如果還是按照這種方法的話,比如說100和40,因為 4 比 1 大,所以40會排在100前面,如果是40,100,2000的話,這排序的順序就變成了 40,2000,100 這樣的話排序就是錯的 w3c給出的例項是...