干熟妇在线视频午夜剧场一级A级|99成人香视频日本两性激情视频|久久 午夜福利无码精品人妻一区|热久久超碰精品精品少妇一区二区|五月天综合在线国产一区免费视频|亚洲成人中心热re久久99|亚洲国产怡红院丁香五月综合h|玖玖九久久久午夜射精视频

十年專注于品牌網站建設 十余年專注于網站建設_小程序開發(fā)_APP開發(fā),低調、敢創(chuàng)新、有情懷!
南昌百恒網絡微信公眾號 掃一掃關注
小程序
tel-icon全國服務熱線:400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡微信小程序

百恒網絡

南昌百恒網絡

Javascript Array(數(shù)組) 重排序方法

百恒網絡 2012-03-13 5382

Javascript Array 重排序方法

數(shù)組中已經存在兩個可以直接用來重排序的方法:reverse()和sort()。有讀者可能猜到了,reverse()方法會對反轉數(shù)組項的順序。請看下面這個例子:

var values= [1, 2, 3, 4, 5];

values.reverse();

alert (values); //5,4,3,2,1

這里數(shù)組的初始值及順序是1、2、3、4、5。而調用數(shù)組的reverse()方法后,其值的順序變成了5、4、3、2、1。這個方法的作用相當直觀明了,但不夠靈活,因此才有了sort()方法。

在默認情況下,sort()方法按升序排列數(shù)組項——即最小的值位于最前面,最大的值排在最后面。為了實現(xiàn)排序,sort()方法會調用每個數(shù)組項的toString()轉型方法,然后比較得到的字符串,以確定如何排序。即使數(shù)組中的每一項都是數(shù)值,sort()方法比較的也是字符串,如下所示:

var values= [0, 1, 5, 10, 15];

values.sort();

alert (values); //0,1,10.15,5

可見,即使例子中值的順序沒有問題,但sort()方法也會根據(jù)測試字符串的結果改變原來的順序。因為數(shù)值5雖然小于10,但在進行字符串比較時,"10"則位于"5"的前面,于是數(shù)組的順序就被修改了。不用說,這種排序方式在很多情況下都不是最佳方案。因此sort()方法可以接收一個比較函數(shù)作為參數(shù),以便我們指定哪個值位于哪個值的前面。

比較函數(shù)接收兩個參數(shù),南昌網站制作工程師提示,如果第一個參數(shù)應該位于第二個之前則返回一個負數(shù),如果兩個參數(shù)相等則返回0,如果第一個參數(shù)應該位于第二個之后則返回一個正數(shù)。以下就是一個簡單的比較函數(shù):

function compare (valuel, value2) {

if (valuel return -1:

} else if (valuel>value2) {

return 1:

} else {

return 0:

}

}

這個比較函數(shù)可以適用于大多數(shù)數(shù)據(jù)類型,只要將其作為參數(shù)傳遞給sort()方法即可,如下面這個例子所示:

var values=[O, 1, 5, 10, 15];

alert (values); //0,1, 5,10,15

在將比較函數(shù)傳遞到sort()方法之后,數(shù)值仍然保持了正確的升序。當然,也可以通過比較函數(shù)產生降序排序的結果,只要交換比較函數(shù)返回的值即可:

function compare (valuel, value2) {

if(valuel < value2) {

}else if(valuel>value2) {

}else {

return O:

}

}

var values= [0, 1, 5, 10, 15];

values.sort (compare);

alert (values); // 15 ,10,5,1,0

在這個修改后的例子中,比較函數(shù)在第一個值應該位于第二個之后的情況下返回l,而在第一個值應該在第二個之前的情況下返回一1。.交換返回值的意思是讓更大的值排位更靠前,也就是對數(shù)組按 照降序排序。當然,如果只想反轉數(shù)組原來的順序,使用reverse()方法要更快一些。

南昌網頁設計公司工程師提醒,reverse()和sort()方法的返回值是經過排序之后的數(shù)組.

對于數(shù)值類型或者其valueOf()方法會返回數(shù)值類型的對象類型.可以使用一個更簡單的比較函數(shù):這個函數(shù)只要用第二個值減第一個值即可①:

function compare (valuel, value2){

return value2 - valuel;

}

由于比較函數(shù)通過返回一個小于零、等于零或大于零的值來影響排序結果,因此減法操作就可以適當?shù)靥幚硭羞@些情況。

①南昌建網站公司百恒網絡前端開發(fā)工程師,如果想要按照升序排序,則compare()函數(shù)中的return語句應該返回value2-value1.

希望本文對廣大站長或從事企業(yè)網站建設公司的團隊有所幫助,如對此不太理解的,可以與南昌做網站公司百恒網絡技術部聯(lián)系。我們很高興與廣大站長和從事企業(yè)網站建設公司技術人員分享我們的技術和經驗。


400-680-9298,0791-88117053
掃一掃關注百恒網絡微信公眾號
掃一掃打開百恒網絡小程序

歡迎您的光顧,我們將竭誠為您服務×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
售后服務 售后服務
 
備案專線 備案專線
 
×
中超| 章丘市| 平谷区| 嘉禾县| 南丰县| 麻栗坡县| 泽普县| 雷山县| 漯河市| 卢氏县| 吕梁市| 宁津县| 武乡县| 芜湖市| 谷城县| 富锦市| 榆社县| 伊金霍洛旗| 池州市| 沈阳市| 洛宁县| 永顺县| 淮北市| 陕西省| 桐梓县| 桐乡市| 穆棱市| 南丰县| 顺昌县| 南昌县| 许昌县| 铜陵市| 唐河县| 泸溪县| 邹平县| 田东县| 翼城县| 息烽县| 长垣县| 凤山市| 玛曲县|