国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JavaScript > 正文

JavaScript sort數(shù)組排序方法和自我實(shí)現(xiàn)排序方法小結(jié)

2019-11-20 09:47:03
字體:
供稿:網(wǎng)友

 前言

針對一個數(shù)組進(jìn)行排序,一個很常見的需求.尤其在后端.當(dāng)然,前端也是有這個需求的.

當(dāng)然,數(shù)組排序,是有現(xiàn)成的方法的.就是sort()方法.

我們先開看下這個.

標(biāo)準(zhǔn)答案,sort方法

var arr = [45,98,67,57,85,6,58,83,48,18];console.log('原數(shù)組');console.log(arr);console.log('sort方法從小到大排序');console.log(arr.sort(function(a,b){return a-b}));console.log('sort方法從大到小排序');console.log(arr.sort(function(a,b){return b-a}));

運(yùn)行結(jié)果如下:

sort方法數(shù)組排序

這里需要注意的是,sort默認(rèn)是按照字母順序來進(jìn)行排序的.因此,我們在排列數(shù)字的時候,需要一個自定義函數(shù).

如上面的代碼

function(a,b){return a-b}

這就是一個從小到大的排序函數(shù).看上去好簡單的樣子,但是我不理解,所以,我根據(jù)我的想法,來實(shí)現(xiàn)排序吧~

我的答案,for方法排序

var arr = [45,98,67,57,85,6,58,83,48,18];console.log('原數(shù)組');console.log(arr);console.log('for方法從小到大排序');console.log(arrSortMinToMax(arr));console.log('for方法從大到小排序');console.log(arrSortMaxToMin(arr));// 找數(shù)組中最小的值function arrMinNum(arr){var minNum = Infinity, index = -1;for (var i = 0; i < arr.length; i++) {if (arr[i]<minNum) {minNum = arr[i];index = i;}};return {"minNum":minNum,"index":index};}// 返回數(shù)組從小到大排序結(jié)果function arrSortMinToMax(arr){var arrNew = [];var arrOld = arr.concat();for (var i = 0; i < arr.length; i++) {arrNew.push(arrMinNum(arrOld).minNum);arrOld.splice(arrMinNum(arrOld).index,1)};return (arrNew);}// 找數(shù)組中最大的值function arrMaxNum(arr){var maxNum = -Infinity, index = -1;for (var i = 0; i < arr.length; i++) {if (arr[i]>maxNum) {maxNum = arr[i];index = i;}};return {"maxNum":maxNum,"index":index};}// 返回數(shù)組從大到小排序結(jié)果function arrSortMaxToMin(arr){var arrNew = [];var arrOld = arr.slice(0);for (var i = 0; i < arr.length; i++) {arrNew.push(arrMaxNum(arrOld).maxNum);arrOld.splice(arrMaxNum(arrOld).index,1);};console.log(arr)return (arrNew);}

運(yùn)行結(jié)果如下圖所示

for循環(huán)數(shù)組排序結(jié)果

我的方法中的知識點(diǎn)

1.當(dāng)一個函數(shù)需要返回多條數(shù)據(jù)的時候,使用json對象格式比較方便.如上面的return {"minNum":minNum,"index":index};

2.如果使用 var arrOld = arr 這種方法來復(fù)制一個數(shù)組,并且,對arrOld進(jìn)行操作的話,是會影響到arr這個原數(shù)組的.因?yàn)閖avascript分原始類型與引用類型(與java、c#類似)。Array是引用類型。arrOld得到的是引用,所以對arrOld的修改會影響到arr

復(fù)制數(shù)組的方法(一)var arrOld = arr.concat(); ,原理:concat()函數(shù)是用于拼接多個數(shù)組的函數(shù),這種寫法相當(dāng)于拼接自己.也就是復(fù)制了.

復(fù)制數(shù)組的方法(二)var arrOld = arr.slice(0) , 原理:slice()函數(shù)是一個截取數(shù)組的函數(shù),設(shè)置值為0,則是全部截取,相當(dāng)于復(fù)制了.

3.splice()方法用于插入、刪除或替換數(shù)組的元素。這里是使用了其刪除數(shù)組中指定位置的特性.

4.我的方法和sort方法的差異.

我的方法沒有修改原數(shù)組,而sort是在原數(shù)組的基礎(chǔ)上進(jìn)行的修改.
我的方法返回的是一個新數(shù)組,原數(shù)組并沒有消失或者改變.(好像和上面一句是一個意思….)

5.排序是編程中非常非常基礎(chǔ)并且非常非常重要的知識點(diǎn).sort排序在執(zhí)行大量數(shù)據(jù)的情況下,效率還是比較低的.當(dāng)然,我的方法的效率也是很低的.

本文轉(zhuǎn)載于:http://blog.csdn.net/fungleo/article/details/51555590

以上所述是小編給大家介紹的JavaScript sort數(shù)組排序方法和自我實(shí)現(xiàn)排序方法小結(jié)的全部內(nèi)容,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復(fù)大家的,在此也非常感謝大家對武林網(wǎng)網(wǎng)站的支持。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 沙雅县| 沛县| 土默特右旗| 铜山县| 曲周县| 红桥区| 炉霍县| 黄石市| 婺源县| 徐州市| 桂东县| 教育| 霍邱县| 同仁县| 西盟| 兰州市| 玛沁县| 会东县| 安岳县| 太和县| 新巴尔虎右旗| 广宗县| 吉木萨尔县| 盐城市| 双牌县| 陆良县| 双流县| 洛浦县| 景泰县| 根河市| 潢川县| 辽中县| 公主岭市| 怀仁县| 慈溪市| 霸州市| 深圳市| 安西县| 贵溪市| 洞口县| 修文县|