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