caoporm97国产在线视频|欧美性XXXXX精品|一本一道久久a久久精品综合开|精品久久久久久久久久久AⅤ|

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

百恒網(wǎng)絡(luò)

南昌百恒網(wǎng)絡(luò)

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

百恒網(wǎng)絡(luò) 2012-03-13 5011

Javascript Array 重排序方法

數(shù)組中已經(jīng)存在兩個(gè)可以直接用來(lái)重排序的方法:reverse()和sort()。有讀者可能猜到了,reverse()方法會(huì)對(duì)反轉(zhuǎn)數(shù)組項(xiàng)的順序。請(qǐng)看下面這個(gè)例子:

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

values.reverse();

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

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

在默認(rèn)情況下,sort()方法按升序排列數(shù)組項(xiàng)——即最小的值位于最前面,最大的值排在最后面。為了實(shí)現(xiàn)排序,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()方法也會(huì)根據(jù)測(cè)試字符串的結(jié)果改變?cè)瓉?lái)的順序。因?yàn)閿?shù)值5雖然小于10,但在進(jìn)行字符串比較時(shí),"10"則位于"5"的前面,于是數(shù)組的順序就被修改了。不用說(shuō),這種排序方式在很多情況下都不是最佳方案。因此sort()方法可以接收一個(gè)比較函數(shù)作為參數(shù),以便我們指定哪個(gè)值位于哪個(gè)值的前面。

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

function compare (valuel, value2) {

if (valuel return -1:

} else if (valuel>value2) {

return 1:

} else {

return 0:

}

}

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

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

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

在將比較函數(shù)傳遞到sort()方法之后,數(shù)值仍然保持了正確的升序。當(dāng)然,也可以通過比較函數(shù)產(chǎn)生降序排序的結(jié)果,只要交換比較函數(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

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

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

對(duì)于數(shù)值類型或者其valueOf()方法會(huì)返回?cái)?shù)值類型的對(duì)象類型.可以使用一個(gè)更簡(jiǎn)單的比較函數(shù):這個(gè)函數(shù)只要用第二個(gè)值減第一個(gè)值即可①:

function compare (valuel, value2){

return value2 - valuel;

}

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

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

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


400-680-9298,0791-88117053
掃一掃關(guān)注百恒網(wǎng)絡(luò)微信公眾號(hào)
掃一掃打開百恒網(wǎng)絡(luò)小程序

歡迎您的光顧,我們將竭誠(chéng)為您服務(wù)×

售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售前咨詢 售前咨詢
 
售后服務(wù) 售后服務(wù)
 
售后服務(wù) 售后服務(wù)
 
備案專線 備案專線
 
×