更新時(shí)間:2021-12-02 09:53:18 來源:動(dòng)力節(jié)點(diǎn) 瀏覽1070次
HTML:
<h3>字符串?dāng)?shù)組排序前</h3>
<div id="show5"></div>
<h3>排序后</h3>
<div id="show6"></div>
jquery:
var animals = ['dog','cat','tiger','pig','bird'];
$('#show5').html(animals.join('<br/>'));
animals = animals.sort();
$('#show6').html(animals.join('<br/>'));
顯示結(jié)果:
字符串?dāng)?shù)組排序前
dog
cat
tiger
pig
bird
排序后
bird
cat
dog
pig
tiger
如果數(shù)組換成了數(shù)值數(shù)組呢?結(jié)果會(huì)什么怎么樣的?
如下:
HTML:
<h3>數(shù)值數(shù)組排序前</h3>
<div id="show7"></div>
<h3>排序后</h3>
<div id="show8"></div>
jquery:
ar nums = ['12','2','5','36','4'];
$('#show7').html(nums.join('<br/>'));
nums = nums.sort();
$('#show8').html(nums.join('<br/>'));
顯示結(jié)果:
數(shù)值數(shù)組排序前
12
2
5
36
4
排序后
12
2
36
4
5
很明顯,數(shù)值數(shù)組最后的排序結(jié)果不是我們想要的。這是為什么呢?
因?yàn)閟ort()方法排序,是基于ASCII值進(jìn)行排序的。故它會(huì)認(rèn)為36小于4(因?yàn)?的ASCII值小于4的ASCII值)。所以要對(duì)排序的sort()方法定義一個(gè)比較函數(shù):
ar nums = ['12','2','5','36','4'];
$('#show7').html(nums.join('<br/>'));
//定義了sort的比較函數(shù)
nums = nums.sort(function(a,b){
return a-b;
});
$('#show8').html(nums.join('<br/>'));
顯示結(jié)果:
數(shù)值數(shù)組排序前
12
2
5
36
4
排序后
2
4
5
12
36
1,sort(function(a,b){return a-b;})對(duì)傳入的一對(duì)值進(jìn)行比較,然后返回的的值為:小于0,大于0,等于0;(大于0交換位置,反之則不)
* 當(dāng)小于0時(shí),說明b>a,故b的排序靠后(即不變).
* 當(dāng)大于0時(shí),說明a>b,故a的排序靠后.
* 當(dāng)?shù)扔?時(shí),說明a=b,故不改變排序.
如果對(duì)數(shù)值數(shù)組的值進(jìn)行降序排序。那么只要把返回的值改為b-a!
0基礎(chǔ) 0學(xué)費(fèi) 15天面授
有基礎(chǔ) 直達(dá)就業(yè)
業(yè)余時(shí)間 高薪轉(zhuǎn)行
工作1~3年,加薪神器
工作3~5年,晉升架構(gòu)
提交申請(qǐng)后,顧問老師會(huì)電話與您溝通安排學(xué)習(xí)
初級(jí) 202925
初級(jí) 203221
初級(jí) 202629
初級(jí) 203743