未使用封裝的代碼
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>
運(yùn)行顯示:
使用封裝之后的代碼
<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++){ //核心排序依據(jù) if(f(arr[j],arr[j+1])>0){ var t=arr[j]; arr[j]=arr[j+1]; arr[j+1]=t; } } } }; //傳兩個(gè)參數(shù),一個(gè)待排序的數(shù)組,一個(gè)方法(判斷是升序還是降序)
//升序function(a,b){return a-b}; mySort(arr,function(a,b){return b-a;}); alert(arr); </script>
運(yùn)行圖:
其中關(guān)于傳參的部分,決定是升序和降序的方法f,可以有兩種方法,實(shí)現(xiàn)默認(rèn)使用升序,不添加f的方法參數(shù),如下的代碼:
//默認(rèn)使用升序 //默認(rèn)不傳參,f的值為undefined
//第一種方法 f=f? f:function(a,b){return a-b;};
//第二種方法 //利用邏輯或的邏輯中斷 //js中的邏輯或運(yùn)算,參與運(yùn)算的數(shù)據(jù)不是Boolean類型時(shí),若第一個(gè)操作數(shù)為真,著表達(dá)式是第一個(gè)操作數(shù)據(jù) //若第一個(gè)表達(dá)式為假,則返回第二個(gè)操作數(shù)的值 f=f||function(a,b){return a-b;};
對(duì)比
使用封裝的方法,可以靈活地更改排序的方式,降序和升序。只需要在定義f這個(gè)方法時(shí),更改一下條件即可,并且封裝好的排序方法,可以方便調(diào)用。
小結(jié)
關(guān)于封裝的方法,在JavaScript中又得到了很好的學(xué)習(xí)認(rèn)識(shí)。不斷反復(fù),不斷積累~~~
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com