javascript中的sort()方法怎么使用

本文小編為大家詳細(xì)介紹“javascript中的sort()方法怎么使用”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“javascript中的sort()方法怎么使用”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來學(xué)習(xí)新知識(shí)吧。

成都創(chuàng)新互聯(lián)提供成都做網(wǎng)站、成都網(wǎng)站建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì),成都品牌網(wǎng)站建設(shè),廣告投放平臺(tái)等致力于企業(yè)網(wǎng)站建設(shè)與公司網(wǎng)站制作,10年的網(wǎng)站開發(fā)和建站經(jīng)驗(yàn),助力企業(yè)信息化建設(shè),成功案例突破上千,是您實(shí)現(xiàn)網(wǎng)站建設(shè)的好選擇.

在javascript中,sort()方法用于數(shù)組排序,該方法能夠根據(jù)一定條件對(duì)數(shù)組元素進(jìn)行排序,語(yǔ)法格式“arrayObject.sort(sortby)”。如果調(diào)用sort()方法時(shí)沒有傳遞參數(shù),則按字母順序?qū)?shù)組中的元素進(jìn)行排序。

本教程操作環(huán)境:windows7系統(tǒng)、javascript1.8.5版、Dell G3電腦。

使用 sort() 對(duì)數(shù)組排序

sort() 方法能夠根據(jù)一定條件對(duì)數(shù)組元素進(jìn)行排序。如果調(diào)用 sort() 方法時(shí)沒有傳遞參數(shù),則按字母順序?qū)?shù)組中的元素進(jìn)行排序。

var a = ["a","e","d","b","c"];  //定義數(shù)組
a.sort();  //按字母順序?qū)υ剡M(jìn)行排序
console.log(a);  //返回?cái)?shù)組[a,b,c,d,e]

使用 sort() 方法時(shí),應(yīng)該注意下面幾個(gè)問題。

1) 所謂的字母順序,實(shí)際上是根據(jù)字母在字符編碼表中的順序進(jìn)行排列的,每個(gè)字符在字符表中都有一個(gè)唯一的編號(hào)。

2) 如果元素不是字符串,則 sort() 方法試圖把數(shù)組元素都轉(zhuǎn)換成字符串,以便進(jìn)行比較。

3) sort() 方法將根據(jù)元素值進(jìn)行逐位比較,而不是根據(jù)字符串的個(gè)數(shù)進(jìn)行排序。

var a = ["aba","baa","aab"];  定義數(shù)組
a.sort();  //按字母順序?qū)υ剡M(jìn)行排序
console.log(a);  //返回?cái)?shù)組[aab,aba,baa]

在排序時(shí),首先比較每個(gè)元素的第 1 個(gè)字符,在第 1 個(gè)字符相同的情況下,再比較第 2 個(gè)字符,以此類推。

4) 在任何情況下,數(shù)組中 undefined 的元素都被排序在末尾。

5) sort() 方法是在原數(shù)組基礎(chǔ)上進(jìn)行排序操作的,不會(huì)創(chuàng)建新的數(shù)組。

sort() 方法不僅按字母順序進(jìn)行排序,還可以根據(jù)其他順序執(zhí)行操作。這時(shí)就必須為方法提供一個(gè)函數(shù)參數(shù),該函數(shù)要比較兩個(gè)值,然后返回一個(gè)用于說明這兩個(gè)值的相對(duì)順序的數(shù)字。排序函數(shù)應(yīng)該具有兩個(gè)參數(shù) a 和 b,,其返回值如下。

  • 如果根據(jù)自定義評(píng)判標(biāo)準(zhǔn),a 小于 b,在排序后的數(shù)組中 a 應(yīng)該出現(xiàn)在 b 之前,就返回一個(gè)小于 0 的值。

  • 如果 a 等于 b,就返回 0。

  • 如果 a 大于 b,就返回一個(gè)大于 0 的值。

示例1

在下面示例中,將根據(jù)排序函數(shù)比較數(shù)組中每個(gè)元素的大小,并按從小到大的順序執(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ù)字大小由小到大進(jìn)行排序
console.log(a);  //返回?cái)?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ù)字大小由小到大進(jìn)行排序
console.log(a);  //返回?cái)?shù)組[9,8,7,6,5,4,3,2,1,0]

示例2

根據(jù)奇偶性質(zhì)排列數(shù)組。

sort() 用法比較靈活,主要是函數(shù)排序比較。例如,如果根據(jù)奇偶數(shù)順序排序數(shù)組,只需要判斷順序函數(shù)中兩個(gè)參數(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ù)字大小由大到小進(jìn)行排序
console.log(a);  //返回?cái)?shù)組[3,1,5,7,9,0,8,6,4,2]

sort() 方法在調(diào)用排序函數(shù)時(shí),對(duì)每個(gè)元素值傳遞給排序函數(shù),如果元素值為偶數(shù),則保留其位置不動(dòng);如果元素值為奇數(shù),則調(diào)換參數(shù) a 和 b 的顯示順序,從而實(shí)現(xiàn)對(duì)數(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ū)分大小寫排序字符串。

在正常情況下,對(duì)字符串進(jìn)行排序是區(qū)分大小寫的,這是因?yàn)槊總€(gè)大寫字母和小寫字母在字符編碼表中的順序是不同的,大寫字母大于小寫字母。

var a = ["aB", "Ab", "Ba", "bA"];  //定義數(shù)組
a.sort();  //默認(rèn)方法排序
console.log(a);  //返回?cái)?shù)組["Ab", "Ba", "aB", "bA"]

大寫字母總是排在左側(cè),如果讓小寫字母總是排在左側(cè),可以設(shè)計(jì):

function f(a ,b) {
    return (a < b);
}
var a = ["aB", "Ab", "Ba", "bA"];  //定義數(shù)組
a.sort();  //默認(rèn)方法排序
console.log(a);  //返回?cái)?shù)組["Ab", "Ba", "aB", "bA"]

對(duì)于字母比較大小時(shí),JavaScript 是根據(jù)字符編碼大小來決定的,當(dāng)為 true 時(shí),則返回 1;為 false 時(shí),則返回 -1。

如果不希望區(qū)分大小寫,大寫字母和小寫字母按相同順序排列,可以設(shè)計(jì):

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();  //默認(rèn)方法排序
console.log(a);  //返回?cái)?shù)組["aB", "Ab", "Ba", "bA"]

如果要調(diào)整排列順序,則設(shè)置返回值取反即可。

示例4

把浮點(diǎn)數(shù)和整數(shù)分開顯示。

function f(a, b) {  //排序函數(shù)
    if (a > Math.floor(a)) return 1;  //如果a是浮點(diǎn)數(shù),則調(diào)換位置
    if (b > Math.floor(b)) return -1;  //如果b是浮點(diǎn)數(shù),則調(diào)換位置
}
var a = [3.5555, 1.23456, 3, 2.11111, 5, 7, 3];  //定義數(shù)組
a.sort(f);  //進(jìn)行篩選
console.log(a);  //返回?cái)?shù)組[3,5,7,3,2.11111,1.23456,3.55555]

如果要調(diào)整排序順序,則設(shè)置返回值取反即可。

讀到這里,這篇“javascript中的sort()方法怎么使用”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

分享標(biāo)題:javascript中的sort()方法怎么使用
標(biāo)題來源:http://bm7419.com/article28/jjcojp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作定制開發(fā)、電子商務(wù)、網(wǎng)站內(nèi)鏈網(wǎng)站排名、微信小程序

廣告

聲明:本網(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í)需注明來源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)