本文小編為大家詳細(xì)介紹“Javascript數(shù)組重排序怎么實(shí)現(xiàn)”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“Javascript數(shù)組重排序怎么實(shí)現(xiàn)”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。
成都創(chuàng)新互聯(lián)公司公司2013年成立,先為海豐等服務(wù)建站,海豐等地企業(yè),進(jìn)行企業(yè)商務(wù)咨詢服務(wù)。為海豐企業(yè)網(wǎng)站制作PC+手機(jī)+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問(wèn)題。
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
可見(jiàn),即使例子中值的順序沒(méi)有問(wèn)題,但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)然,也可以通過(guò)比較函數(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)過(guò)排序之后的數(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ù)通過(guò)返回一個(gè)小于零、等于零或大于零的值來(lái)影響排序結(jié)果,因此減法操作就可以適當(dāng)?shù)靥幚硭羞@些情況。
讀到這里,這篇“Javascript數(shù)組重排序怎么實(shí)現(xiàn)”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
當(dāng)前標(biāo)題:Javascript數(shù)組重排序怎么實(shí)現(xiàn)
標(biāo)題路徑:http://muchs.cn/article44/pjjghe.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、域名注冊(cè)、ChatGPT、手機(jī)網(wǎng)站建設(shè)、外貿(mào)建站、服務(wù)器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)