js array 排序


 

數據

let data = [
        {chinese: '蔡司', english: 'Chase',score:67},
        {chinese: '艾倫', english: 'Allen',score:77}, 
{chinese: '左拉', english: 'Zola',score:87},
{chinese: '貝克', english: 'Baker',score:99},
{chinese:
'伯格', english: 'Berg',score:55},
{chinese:
'菲奇', english: 'Fitch',score:100},
{chinese:
'迪安', english: 'Dean',score:86},
{chinese:
'厄爾', english: 'Earle',score:40},
{chinese:
'亨利', english: 'Henry',score:70}, ]

漢字數組屬性排序

  //根據漢字首字母排序
    //使用箭頭函數
    //【注】localeCompare() 是js內置方法
     data.sort((a, b)=> b.chinese.localeCompare(a.chinese, 'zh')); //z~a 排序
     data.sort((a, b)=> a.chinese.localeCompare(b.chinese, 'zh')); //a~z 排序
 

英文排序

 //根據英文字母排序
    //使用箭頭函數
     data.sort((a, b)=> b.english.charCodeAt(0)-a.english.charCodeAt(0)); //z~a 排序
     data.sort((a, b)=> a.english.charCodeAt(0)-b.english.charCodeAt(0)); //a~z 排序

數字排序

 //根據數字排序
    //使用箭頭函數
     data.sort((a, b)=> b.score-a.score); //分數從高到低 排序
     data.sort((a, b)=> a.score-b.score); //分數從低到高 排序

 數字和字母混排

var d = [1,2,3,'a','k','b','d',10,20,'c']  
d.sort(function(a,b){  
    var c = isFinite(a), // 如果 number 是有限數字(或可轉換為有限數字),那么返回 true。否則,如果 number 是 NaN(非數字),或者是正、負無窮大的數,則返回 false。  
        d = isFinite(b);  //isFinite() 判斷a、b是否是數字。
    return (c != d && d - c) || a > b;   //c != d && c - d  如果c和d不相等 ,也就是說比較的值不是同一類型。那就比較 c-d的值是1還是-1(中間進行了隱式類型轉換)
                        // 如果c == d 也就是說c、d是同一類型的值,c、d可能都是字母,也可能都是數字。這里就可以直接比較大小了 }) console.log(d);
//[1, 2, 3, 10, 20, "a", "b", "c", "d", "k"]
 

 


免責聲明!

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



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