JS中數(shù)組重排序方法
1.數(shù)組中已存在兩個(gè)可直接用來重排序的方法:reverse()和sort()。
reverse()和sort()方法的返回值是經(jīng)過排序后的數(shù)組。reverse()方法會(huì)反轉(zhuǎn)數(shù)組項(xiàng)的順序:
var values=[1,2,3,4,5]; values.reverse(); alert(values); //5,4,3,2,1
在默認(rèn)情況下,sort()方法按升序排列數(shù)組,sort()方法會(huì)調(diào)用每個(gè)數(shù)組項(xiàng)的toString()轉(zhuǎn)型方法,然后比較得到字符串,確定如何排序。即使數(shù)組中的每一項(xiàng)都是數(shù)值,sort()方法比較的也是字符串:
var values = [0,1,5,10,15]; values.sort(); alert(values); //0,1,10,15,5
因此,sort()方法可以接收一個(gè)比較函數(shù)作為參數(shù)。
function compare(value1,value2){ if (value1 < value2){ return -1; }else if (value1 > value2){ return 1; }else{ return 0; } }
此比較函數(shù)可適用于大多數(shù)數(shù)據(jù)類型,只要將其作為參數(shù)傳遞給sort()方法即可:
var values = [0,1,3,7,9,15]; values.sort(compare); alert(values); //0,1,3,7,9,15
也可通過比較函數(shù)產(chǎn)生降序排序,只需交換函數(shù)返回值即可:
function compare (value1, value2){ if (value1<value2){ return 1; }else if { return -1; }else{ return 0; } }
sort()函數(shù)的排序條件是:
參數(shù)大于0,arr的相鄰兩個(gè)元素交換位置;
參數(shù)小于0,arr的相鄰兩個(gè)元素不交換位置;
參數(shù)等于0,arr的相鄰兩個(gè)元素大小相等;所以compare自定義函數(shù)必須返回一個(gè)數(shù)值。
2.對(duì)于數(shù)值類型或者valueOf()方法會(huì)返回?cái)?shù)值類型的對(duì)象類型。
可使用一個(gè)更簡(jiǎn)單的比較函數(shù)。此函數(shù)只要第二個(gè)值減第一個(gè)值即可。
function compare (value1,value2){ return value2 - value1; }
以上所述是小編給大家介紹的JS中數(shù)組重排序方法,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
- JavaScript實(shí)現(xiàn)鏈表插入排序和鏈表歸并排序
- JavaScript排序算法動(dòng)畫演示效果的實(shí)現(xiàn)方法
- js利用appendChild對(duì)<li>標(biāo)簽進(jìn)行排序的實(shí)現(xiàn)方法
- 淺談js控制li標(biāo)簽排序問題 js調(diào)用php函數(shù)的方法
- js基本算法:冒泡排序,二分查找的簡(jiǎn)單實(shí)例
- javascript數(shù)組對(duì)象常用api函數(shù)小結(jié)(連接,插入,刪除,反轉(zhuǎn),排序等)
- AngularJS 過濾與排序詳解及實(shí)例代碼
- JavaScript算法系列之快速排序(Quicksort)算法實(shí)例詳解
- JavaScript 冒泡排序和選擇排序的實(shí)現(xiàn)代碼
- 基于javascript實(shí)現(xiàn)的快速排序
相關(guān)文章
微信公眾號(hào)獲取用戶地理位置并列出附近的門店的示例代碼
這篇文章主要介紹了微信公眾號(hào)獲取用戶地理位置并列出附近的門店的示例代碼,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-07-07bootstrap下拉列表與輸入框組結(jié)合的樣式調(diào)整
輸入框組默認(rèn)是div.input-group。接下來通過本文給大家介紹bootstrap下拉列表與輸入框組結(jié)合的樣式調(diào)整,感興趣的朋友一起看看吧2016-10-10JS中頁面與頁面之間超鏈接跳轉(zhuǎn)中文亂碼問題的解決辦法
在原頁面一張圖片上添加了一個(gè)鏈接,鏈接中有中文,于是在跳轉(zhuǎn)過程中出現(xiàn)中文亂碼問題,下面給大家分享下解決方案2016-12-12淺談javascript運(yùn)算符——條件,逗號(hào),賦值,()和void運(yùn)算符
下面小編就為大家?guī)硪黄獪\談javascript運(yùn)算符——條件,逗號(hào),賦值,()和void運(yùn)算符。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2016-07-07JavaScript 點(diǎn)擊頁面上的按紐,彈出層,背景變灰
點(diǎn)擊頁面上的按紐,彈出一個(gè)層,背景變灰,這樣的效果現(xiàn)在網(wǎng)頁應(yīng)用的比較多,這里只是個(gè)簡(jiǎn)單的實(shí)現(xiàn)方式2010-06-06基于ajax與msmq技術(shù)的消息推送功能實(shí)現(xiàn)代碼
這篇文章主要介紹了基于ajax與msmq技術(shù)的消息推送功能實(shí)現(xiàn)代碼,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-12yii form 表單提交之前JS在提交按鈕的驗(yàn)證方法
很多時(shí)候,需要對(duì)Yii表單model中的對(duì)象設(shè)置的rules進(jìn)行判斷,但是有的時(shí)候可能需要在提交之前就在客戶端進(jìn)行驗(yàn)證。怎么處理呢?接下來通過本文給大家分享yii form 表單提交之前JS在提交按鈕的驗(yàn)證方法,需要的的朋友參考下2017-03-03