本文小編為大家詳細介紹“javascript中的sort()方法怎么使用”,內容詳細,步驟清晰,細節(jié)處理妥當,希望這篇“javascript中的sort()方法怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學習新知識吧。
成都創(chuàng)新互聯(lián)提供成都做網(wǎng)站、成都網(wǎng)站建設、成都外貿網(wǎng)站建設、網(wǎng)頁設計,成都品牌網(wǎng)站建設,廣告投放平臺等致力于企業(yè)網(wǎng)站建設與公司網(wǎng)站制作,10年的網(wǎng)站開發(fā)和建站經(jīng)驗,助力企業(yè)信息化建設,成功案例突破上千,是您實現(xiàn)網(wǎng)站建設的好選擇.
在javascript中,sort()方法用于數(shù)組排序,該方法能夠根據(jù)一定條件對數(shù)組元素進行排序,語法格式“arrayObject.sort(sortby)”。如果調用sort()方法時沒有傳遞參數(shù),則按字母順序對數(shù)組中的元素進行排序。
本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。
使用 sort() 對數(shù)組排序
sort() 方法能夠根據(jù)一定條件對數(shù)組元素進行排序。如果調用 sort() 方法時沒有傳遞參數(shù),則按字母順序對數(shù)組中的元素進行排序。
var a = ["a","e","d","b","c"]; //定義數(shù)組 a.sort(); //按字母順序對元素進行排序 console.log(a); //返回數(shù)組[a,b,c,d,e]
使用 sort() 方法時,應該注意下面幾個問題。
1) 所謂的字母順序,實際上是根據(jù)字母在字符編碼表中的順序進行排列的,每個字符在字符表中都有一個唯一的編號。
2) 如果元素不是字符串,則 sort() 方法試圖把數(shù)組元素都轉換成字符串,以便進行比較。
3) sort() 方法將根據(jù)元素值進行逐位比較,而不是根據(jù)字符串的個數(shù)進行排序。
var a = ["aba","baa","aab"]; 定義數(shù)組 a.sort(); //按字母順序對元素進行排序 console.log(a); //返回數(shù)組[aab,aba,baa]
在排序時,首先比較每個元素的第 1 個字符,在第 1 個字符相同的情況下,再比較第 2 個字符,以此類推。
4) 在任何情況下,數(shù)組中 undefined 的元素都被排序在末尾。
5) sort() 方法是在原數(shù)組基礎上進行排序操作的,不會創(chuàng)建新的數(shù)組。
sort() 方法不僅按字母順序進行排序,還可以根據(jù)其他順序執(zhí)行操作。這時就必須為方法提供一個函數(shù)參數(shù),該函數(shù)要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數(shù)字。排序函數(shù)應該具有兩個參數(shù) a 和 b,,其返回值如下。
如果根據(jù)自定義評判標準,a 小于 b,在排序后的數(shù)組中 a 應該出現(xiàn)在 b 之前,就返回一個小于 0 的值。
如果 a 等于 b,就返回 0。
如果 a 大于 b,就返回一個大于 0 的值。
示例1
在下面示例中,將根據(jù)排序函數(shù)比較數(shù)組中每個元素的大小,并按從小到大的順序執(zhí)行排序。
function f(a,b) { //排序函數(shù) return (a - b); //返回比較參數(shù) } var a = [3,1,2,4,5,7,6,8,0,9]; //定義數(shù)組 a.sort(f); //根據(jù)數(shù)字大小由小到大進行排序 console.log(a); //返回數(shù)組[0,1,2,3,4,5,6,4,7,8,9]
如果按從大到小的順序執(zhí)行,則讓返回值取反即可。代碼如下:
function f(a,b) { //排序函數(shù) return -(a - b); //取反并返回比較參數(shù) } var a = [3,1,2,4,5,7,6,8,0,9]; //定義數(shù)組 a.sort(f); //根據(jù)數(shù)字大小由小到大進行排序 console.log(a); //返回數(shù)組[9,8,7,6,5,4,3,2,1,0]
示例2
根據(jù)奇偶性質排列數(shù)組。
sort() 用法比較靈活,主要是函數(shù)排序比較。例如,如果根據(jù)奇偶數(shù)順序排序數(shù)組,只需要判斷順序函數(shù)中兩個參數(shù)是否為奇偶數(shù),并決定排列順序。
function f(a, b) { //排序函數(shù) var a = a % 2; //獲取參數(shù)a的奇偶性 var b = b % 2; //獲取參數(shù)b的奇偶性 if (a == 0) return 1; //如果參數(shù)a為偶數(shù),則排在左邊 if (b == 0) return -1; //如果參數(shù)b為偶數(shù),則排在右邊 } var a = [3,1,2,4,5,7,6,8,0,9]; //定義數(shù)組 a.sort(f); //根據(jù)數(shù)字大小由大到小進行排序 console.log(a); //返回數(shù)組[3,1,5,7,9,0,8,6,4,2]
sort() 方法在調用排序函數(shù)時,對每個元素值傳遞給排序函數(shù),如果元素值為偶數(shù),則保留其位置不動;如果元素值為奇數(shù),則調換參數(shù) a 和 b 的顯示順序,從而實現(xiàn)對數(shù)組中所有元素執(zhí)行奇偶排序。如果希望偶數(shù)排在前面,奇數(shù)排在后面,則只需要取返回值。排序函數(shù)如下。
function f(a, b) { var a = a % 2; var b = b % 2; if (a == 0) return -1; if (b == 0) return 1; }
示例3
不區(qū)分大小寫排序字符串。
在正常情況下,對字符串進行排序是區(qū)分大小寫的,這是因為每個大寫字母和小寫字母在字符編碼表中的順序是不同的,大寫字母大于小寫字母。
var a = ["aB", "Ab", "Ba", "bA"]; //定義數(shù)組 a.sort(); //默認方法排序 console.log(a); //返回數(shù)組["Ab", "Ba", "aB", "bA"]
大寫字母總是排在左側,如果讓小寫字母總是排在左側,可以設計:
function f(a ,b) { return (a < b); } var a = ["aB", "Ab", "Ba", "bA"]; //定義數(shù)組 a.sort(); //默認方法排序 console.log(a); //返回數(shù)組["Ab", "Ba", "aB", "bA"]
對于字母比較大小時,JavaScript 是根據(jù)字符編碼大小來決定的,當為 true 時,則返回 1;為 false 時,則返回 -1。
如果不希望區(qū)分大小寫,大寫字母和小寫字母按相同順序排列,可以設計:
function f(a, b) { var a = a.toLowerCase; var b = b.toLowerCase; if (a < b) { return 1; } else { return -1; } } var a = ["aB", "Ab", "Ba", "bA"]; //定義數(shù)組 a.sort(); //默認方法排序 console.log(a); //返回數(shù)組["aB", "Ab", "Ba", "bA"]
如果要調整排列順序,則設置返回值取反即可。
示例4
把浮點數(shù)和整數(shù)分開顯示。
function f(a, b) { //排序函數(shù) if (a > Math.floor(a)) return 1; //如果a是浮點數(shù),則調換位置 if (b > Math.floor(b)) return -1; //如果b是浮點數(shù),則調換位置 } var a = [3.5555, 1.23456, 3, 2.11111, 5, 7, 3]; //定義數(shù)組 a.sort(f); //進行篩選 console.log(a); //返回數(shù)組[3,5,7,3,2.11111,1.23456,3.55555]
如果要調整排序順序,則設置返回值取反即可。
讀到這里,這篇“javascript中的sort()方法怎么使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識點還需要大家自己動手實踐使用過才能領會,如果想了解更多相關內容的文章,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。