js 重構(gòu)Array的sort排序方法
更新時間:2011年07月13日 18:03:25 作者:
sort是數(shù)組的一個排序方法。學(xué)習(xí)js的朋友可以參考下。
這個排序是進行兩兩比較。
拿這個數(shù)組進行降序排列var a = [3, 1, 5, 6, 4, 2];
第一輪比較:用第一個數(shù)值和本數(shù)組的其他元素進行比對
3比1
3比5 //5大,所以所以進行交換 得a = [5, 1, 3, 6, 4, 2];
5比6 //交換 得a = [6, 1, 3, 5, 4, 2];
6比4
6比2
第一輪最終結(jié)果 a = [6, 1, 3, 5, 4, 2];
第二輪比較:用第二個數(shù)值和這個數(shù)值之后的元素進行對比
1比3 //交換 得a = [6, 3, 1, 5, 4, 2];
3比5 //交換 得a = [6, 5, 1, 3, 4, 2];
5比4
5比2
第二輪最終結(jié)果 a = [6, 5, 1, 3, 4, 2];
就這樣依次進行交換
第三輪最終結(jié)果 a = [6, 5, 4, 1, 3, 2];
第四輪最終結(jié)果 a = [6, 5, 4, 3, 1, 2];
第五輪最終結(jié)果 a = [6, 5, 4, 3, 2, 1];
下面是重構(gòu)的方法:
Array.prototype.fst = function(fn){
var fn = fn || function(a, b){ return a > b;};
for(var i=0; i<this.length; i++){
for(var j=i; j<this.length; j++){
if(fn(this[i], this[j]) > 0){
var t = this[i];
this[i] = this[j];
this[j] = t;
}
}
}
return this;
};
查看實際演示
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
拿這個數(shù)組進行降序排列var a = [3, 1, 5, 6, 4, 2];
第一輪比較:用第一個數(shù)值和本數(shù)組的其他元素進行比對
3比1
3比5 //5大,所以所以進行交換 得a = [5, 1, 3, 6, 4, 2];
5比6 //交換 得a = [6, 1, 3, 5, 4, 2];
6比4
6比2
第一輪最終結(jié)果 a = [6, 1, 3, 5, 4, 2];
第二輪比較:用第二個數(shù)值和這個數(shù)值之后的元素進行對比
1比3 //交換 得a = [6, 3, 1, 5, 4, 2];
3比5 //交換 得a = [6, 5, 1, 3, 4, 2];
5比4
5比2
第二輪最終結(jié)果 a = [6, 5, 1, 3, 4, 2];
就這樣依次進行交換
第三輪最終結(jié)果 a = [6, 5, 4, 1, 3, 2];
第四輪最終結(jié)果 a = [6, 5, 4, 3, 1, 2];
第五輪最終結(jié)果 a = [6, 5, 4, 3, 2, 1];
下面是重構(gòu)的方法:
復(fù)制代碼 代碼如下:
Array.prototype.fst = function(fn){
var fn = fn || function(a, b){ return a > b;};
for(var i=0; i<this.length; i++){
for(var j=i; j<this.length; j++){
if(fn(this[i], this[j]) > 0){
var t = this[i];
this[i] = this[j];
this[j] = t;
}
}
}
return this;
};
查看實際演示
[Ctrl+A 全選 注:引入外部Js需再刷新一下頁面才能執(zhí)行]
您可能感興趣的文章:
- js中數(shù)組(Array)的排序(sort)注意事項說明
- JavaScript數(shù)組的快速克隆(slice()函數(shù))和數(shù)組的排序、亂序和搜索(sort()函數(shù))
- 數(shù)據(jù)排序誰最快(javascript中的Array.prototype.sort PK 快速排序)
- js sort 二維數(shù)組排序的用法小結(jié)
- JS中使用sort結(jié)合localeCompare實現(xiàn)中文排序?qū)嵗?/a>
- JavaScript Sort 表格排序
- js中數(shù)組排序sort方法的原理分析
- Js sort排序使用方法
- Js數(shù)組排序函數(shù)sort()介紹
- 頁面內(nèi)容排序插件jSort使用方法
- JS中sort函數(shù)排序用法實例分析
相關(guān)文章
JavaScript?函數(shù)表達(dá)式與函數(shù)聲明的用法及區(qū)別
這篇文章主要介紹了JavaScript?函數(shù)表達(dá)式與函數(shù)聲明詳析,函數(shù)表達(dá)式和函數(shù)聲明是JavaScript中創(chuàng)建函數(shù)的兩種方法,下面文章具體的相關(guān)內(nèi)容介紹,需要的小伙伴可以參考一下2022-06-06js定時器(執(zhí)行一次、重復(fù)執(zhí)行)
這篇文章主要分享一段js代碼,有關(guān)js定時器的小例子,分為執(zhí)行一次的定時器與重復(fù)執(zhí)行的定時器,需要的朋友可以參考下2014-03-03逐行分析鴻蒙系統(tǒng)的 JavaScript 框架(推薦)
鴻蒙系統(tǒng)使用 JavaScript 開發(fā) GUI 是一種類似于微信小程序、輕應(yīng)用的模式。這篇文章給大家?guī)砹酥鹦蟹治鲽櫭上到y(tǒng)的 JavaScript 框架的相關(guān)知識,感興趣的朋友跟隨小編一起看看吧2020-09-09javascript中callee與caller的區(qū)別分析
有些小伙伴可能會問caller,callee 是什么?在javascript 中有什么樣的作用?那么本篇會對于此做一些基本介紹。希望能夠?qū)Υ蠹依斫鈐avascript中的callee與caller有所幫助。2015-04-04深入理解javascript作用域第二篇之詞法作用域和動態(tài)作用域
這篇文章主要介紹了javascript作用域第二篇之詞法作用域和動態(tài)作用域的相關(guān)資料,非常不錯,具有參考借鑒價值,感興趣的朋友可以參考下2016-07-07基于BootStrap multiselect.js實現(xiàn)的下拉框聯(lián)動效果
當(dāng)option特別多時,一般的下拉框選擇起來就有點力不從心了,所以使用multiselect是個很好的選擇。在網(wǎng)上找了半天找到了解決方案,具體實現(xiàn)代碼大家參考下本文吧2017-07-07