上万部爽片,立即观看,在线观看,日韩av无码久久精品免费,欧美性受xxxx喷潮,欧洲男同gay,日韩精品一区二区三区

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

百恒網絡

南昌百恒網絡

Javascript Array(數組) 重排序方法

百恒網絡 2012-03-13 5253

Javascript Array 重排序方法

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

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

values.reverse();

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

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

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

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

values.sort();

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

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

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

function compare (valuel, value2) {

if (valuel return -1:

} else if (valuel>value2) {

return 1:

} else {

return 0:

}

}

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

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

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

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

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

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

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

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

function compare (valuel, value2){

return value2 - valuel;

}

由于比較函數通過返回一個小于零、等于零或大于零的值來影響排序結果,因此減法操作就可以適當地處理所有這些情況。

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

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


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

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

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務 售后服務
 
售后服務 售后服務
 
備案專線 備案專線
 
×