JavaScript的Array對象有一個sort方法,用于實現對數組元素的排序,該方法默認按照數組項ASCII 字符順序升序排列。
如[6,7,9,1,-1].sort();執行后數組變為[-1,1,6,7,9]。
對于需要降序排列或非字符串排序,該方法就不能很好的執行了。
當然,sort有一個可選參數,它能幫我們解決這個問題,通過為sort傳入一個函數,sort根據函數返回值進行排序。
數組為該函數默認傳入數組中的兩個元素,如傳入a,b,如果函數返回值大于0,則排序方式為b,a,如果返回值小于0,則排序結果為a,b。
具體含義不好解釋,當初我也對這個sort其到底是怎么排序的不理解。
如果知道了其實現過程,就對他的排序原理明了了。
sort的實現其實很像是一個簡單的冒泡排序。
偶今日對其進行了模擬,看懂這個函數你一定就明白sort的原理了。
<script type="text/javascript"> <!-- var myarray = new Array(8,6,7,9,1,-1,4); var myarray1 = new Array(8,6,7,9,1,-1,4); var sortAsc = function(x,y) { return x-y; }; var sortDesc = function(x,y) { return y-x; }; Array.prototype.st=function(fn){ var t; fn=fn||function(x,y){return x-y}; for(var i=0;i<this.length;i++){ for(var j=i;j<this.length;j++){ if(fn(this[i],this[j])>0){ t=this[i]; this[i]=this[j]; this[j]=t; } } } } myarray.st(); alert("默認升序排列:"+myarray); myarray.st(sortDesc); alert("降序排列:"+myarray); myarray.st(sortAsc); alert("升序排列:"+myarray); myarray1.sort(function(){return 1}); //注:js默認的sort對此排序結果跟這個不一樣,其排序方式還暫不理解 alert("逆序排列:"+myarray1); //--> </script> 總結
以上所述是小編給大家介紹的js模擬實現Array的sort方法,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對武林網網站的支持!
新聞熱點
疑難解答