未使用封裝的代碼
1.這段代碼里面的核心代碼理解了,便很好完成。
<script type="text/javascript"> var arr=[1,6,3]; //冒泡 for(var i=0;i<arr.length;i++){ for(var j=0;j<arr.length-1-i;j++){ //核心排序 if(arr[j]>arr[j+1]){ var t=arr[j]; arr[j]=arr[j+1]; arr[j+1]=t; } } } alert(arr); </script>
運行顯示:
使用封裝之后的代碼
<script type="text/javascript"> var arr=[1,6,3]; //冒泡--添加了封裝性的方法 var mySort=function(arr,f){ for(var i=0;i<arr.length;i++){ for(var j=0;j<arr.length-1-i;j++){ //核心排序依據 if(f(arr[j],arr[j+1])>0){ var t=arr[j]; arr[j]=arr[j+1]; arr[j+1]=t; } } } }; //傳兩個參數,一個待排序的數組,一個方法(判斷是升序還是降序)
//升序function(a,b){return a-b}; mySort(arr,function(a,b){return b-a;}); alert(arr); </script>
運行圖:
其中關于傳參的部分,決定是升序和降序的方法f,可以有兩種方法,實現默認使用升序,不添加f的方法參數,如下的代碼:
//默認使用升序 //默認不傳參,f的值為undefined
//第一種方法 f=f? f:function(a,b){return a-b;};
//第二種方法 //利用邏輯或的邏輯中斷 //js中的邏輯或運算,參與運算的數據不是Boolean類型時,若第一個操作數為真,著表達式是第一個操作數據 //若第一個表達式為假,則返回第二個操作數的值 f=f||function(a,b){return a-b;};
對比
使用封裝的方法,可以靈活地更改排序的方式,降序和升序。只需要在定義f這個方法時,更改一下條件即可,并且封裝好的排序方法,可以方便調用。
小結
關于封裝的方法,在JavaScript中又得到了很好的學習認識。不斷反復,不斷積累~~~
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com