數(shù)組對象的sort方法可以按照一定的順序把數(shù)組元素重新排列起來。通常情況下,都是按照字母順序排列的。
JavaScript代碼
- <script type="text/javascript">
- var arr = ["HTML","CSS","JavaScript","DOM"];
- var arr2 = [4,3,2,1];
- var arr3 = [40,300,2000,10000];
- </script>
<script type="text/javascript">var arr = ["HTML","CSS","JavaScript","DOM"];var arr2 = [4,3,2,1];var arr3 = [40,300,2000,10000];</script>
測試數(shù)組的sort方法
arr.sort();方法:可以看到,arr數(shù)組本來是"HTML","CSS","JavaScript","DOM"。而sort之后將是" <script type="text/javascript"></script> CSS","DOM","HTML","JavaScript" 。
arr2.sort();方法:而arr2本來是4,3,2,1,而排序之后則是 <script type="text/javascript"></script> 1,2,3,4 。不過這可不是按照數(shù)字的大小來排列的,而仍然是按照字母順序。從arr3.sort()的結果就可以看出來。
arr3.sort()方法:數(shù)組排列之后的順序是10000,2000,300,40,10000作為最大的數(shù)字卻排在了第一位,僅僅是因為它以1開頭。
sort方法的參數(shù)
sort方法可以接受一個參數(shù),這個參數(shù)的類型是函數(shù),它也就是排序函數(shù)了。我們可以使用它來進行自定義的排序方式。例如,我們可以讓上面的數(shù)字數(shù)組按照大小的方式排序??聪旅娴腏S代碼:
- <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
- <html xmlns="http://www.w3.org/1999/xhtml">
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
- <title>無標題文檔</title>
- <script type="text/javascript">
- var arr3 = [40,300,200,10000];
- function compare(a,b)
- {
- return b-a;
- }
- function test()
- {
- arr3.sort(compare);
- alert(arr3.join());
- }
- </script>
- </head>
- <body>
- <input type="button" value="text" onclick="test();"/>
- </body>
- </html>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312" /><title>無標題文檔</title><script type="text/javascript">var arr3 = [40,300,200,10000];function compare(a,b){return b-a;}function test(){arr3.sort(compare);alert(arr3.join());}</script></head><body><input type="button" value="text" onclick="test();"/></body></html>
在執(zhí)行arr3.sort(compare)方法時,當我們使用自定義的compare函數(shù)進行排序的時候,10000這個最大的數(shù)字已經(jīng)順利地排到最后了(順序是:40,300,200,10000)。從代碼中我們可以觀察出來,sort是根據(jù)排序函數(shù)的返回值是正還是負來排序的。所以如果compare函數(shù)寫成 return b - a; 則排序后的順序為:10000,200,300,40