sort對數組排序


描述 

Array的sort方法用於對原數組進行排序,不會產生新的數組。排序默認的規則是按照數組元素的字符編碼進行排序。如果要按照自己的意願對數組進行升序或者降序排序,就需要對sort傳入一個比較函數,該方法有兩個參數a,b進行比較,並且接收由兩個參數比較所得的結果  a>b 返回值為1  a<b 返回值-1  a=b 返回值為0 。了解了這些我們就可以很方便的對各種數組進行排序,下面可以看一下具體的實例。

一、sort的默認排序

 

let ary=[1,3,5,4,3,7,0]
console.log(ary.sort())//[0, 1, 3, 3, 4, 5, 7]
let ary1 =[1,11,21,9,4,24]//[1, 11, 21, 24, 4, 9]
console.log(ary1.sort())

 

二、sort的升序或降序

let ary3 = [1, 31, 14, 11, 22, 88, 53]
console.log(ary3.sort((a, b) => { //[1, 11, 14, 22, 31, 53, 88]
return a - b
}))
console.log(ary3.sort((a, b) => {//[88, 53, 31, 22, 14, 11, 1]
return b - a
}))
let ary4 = ['he', 'Pg', 'ab', 'cd']
console.log(ary4.sort((a, b) => { //["ab", "cd", "he", "Pg"]
let a1 = a.toLowerCase();
let b1 = b.toLowerCase();
if (a1 < b1) return -1;
if (a1 > b1) return 1;
return 0;
}))

三、sort對數組對象按照特定字段的排序

   3.1:常規的數字或字母對象排序

let objList = [{
        name: 'a',
        value: '1'
}, {
        name: 'd',
        value: '12'
}, {
        name: 'b',
        value: '11'
}, {
        name: 'e',
        value: '9'
}]
objList.sort((a, b) => {
        return a.value - b.value
})
console.log(JSON.stringify(objList))//[{"name":"a","value":"1"},{"name":"e","value":"9"},{"name":"b","value":"11"},{"name":"d","value":"12"}]

   3.2、對value值為漢字的排序

 let objList1 = [{
            name: '科長',
            value: '1'
        }, {
            name: '行長',
            value: '12'
        }, {
            name: '金龜子',
            value: '11'
        }, {
            name: '阿拉伯',
            value: '9'
        }, {
            name: '創新',
            value: '91'
        }]
        objList1.sort((a, b) => {
            return a['name'].localeCompare(b['name'])
        })
        console.log(JSON.stringify(objList1))
//[{"name":"阿拉伯","value":"9"},{"name":"創新","value":"91"},{"name":"金龜子","value":"11"},{"name":"科長","value":"1"},{"name":"行長","value":"12"}]

 注意,這里排序識別不了多音字。 按照我自己的理解(如:我們認為'行長' 對應的首字母是 H 但是 中文字庫存的是 ‘X’)

如有錯誤,請指出。謝謝!!

 

 

 

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM