您好,登錄后才能下訂單哦!
本文小編為大家詳細介紹“Javascript數組重排序怎么實現”,內容詳細,步驟清晰,細節處理妥當,希望這篇“Javascript數組重排序怎么實現”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
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;
}
由于比較函數通過返回一個小于零、等于零或大于零的值來影響排序結果,因此減法操作就可以適當地處理所有這些情況。
讀到這里,這篇“Javascript數組重排序怎么實現”文章已經介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。