js中陣列(Array)的排序(sort)注意事項

weixin_34391854發表於2009-10-20

直接看程式碼吧,測試結果也貼在裡面了

var arrDemo = new Array();

 arrDemo[
0= 10;
 arrDemo[
1= 50;
 arrDemo[
2= 51;
 arrDemo[
3= 100;

 arrDemo.sort(); 
//呼叫sort方法後,陣列本身會被改變,即影響原陣列

 alert(arrDemo);
//10,100,50,51 預設情況下sort方法是按ascii字母順序排序的,而非我們認為是按數字大小排序

ExpandedBlockStart.gifContractedBlock.gif arrDemo.sort(
function(a,b){return a>b?1:-1});//從小到大排序

 alert(arrDemo);
//10,50,51,100

ExpandedBlockStart.gifContractedBlock.gif arrDemo.sort(
function(a,b){return a<b?1:-1});//從大到小排序

 alert(arrDemo);
//100,51,50,10

 

結論:

1.陣列呼叫sort方法後,會影響本身(而非生成新陣列)

2.sort()方法預設是按字元來排序的,所以在對數字型陣列排序時,不可想當然的以為會按數字大小排序!

3.要改變預設的sort行為(即按字元排序),可以自行指定排序規則函式(如本例所示)

相關文章