直接看程式碼吧,測試結果也貼在裡面了
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字母順序排序的,而非我們認為是按數字大小排序
arrDemo.sort(function(a,b){return a>b?1:-1});//從小到大排序
alert(arrDemo);//10,50,51,100
arrDemo.sort(function(a,b){return a<b?1:-1});//從大到小排序
alert(arrDemo);//100,51,50,10
arrDemo[0] = 10;
arrDemo[1] = 50;
arrDemo[2] = 51;
arrDemo[3] = 100;
arrDemo.sort(); //呼叫sort方法後,陣列本身會被改變,即影響原陣列
alert(arrDemo);//10,100,50,51 預設情況下sort方法是按ascii字母順序排序的,而非我們認為是按數字大小排序
arrDemo.sort(function(a,b){return a>b?1:-1});//從小到大排序
alert(arrDemo);//10,50,51,100
arrDemo.sort(function(a,b){return a<b?1:-1});//從大到小排序
alert(arrDemo);//100,51,50,10
結論:
1.陣列呼叫sort方法後,會影響本身(而非生成新陣列)
2.sort()方法預設是按字元來排序的,所以在對數字型陣列排序時,不可想當然的以為會按數字大小排序!
3.要改變預設的sort行為(即按字元排序),可以自行指定排序規則函式(如本例所示)