JS數組排序sort()方法同時按照兩種方式排序的用法


JS數組的sort()方法已經可以滿足我們對數組的很多處理需求了,可以對數字、字母、字符串(按照字母)和布爾類型進行排序。

下面是具體的介紹:

  1. 對數字進行排序:
    var arr = [10, 5, 40, 25, 1];
    
    document.write(arr + "<br />");
    document.write(arr.sort());

    輸出:

    [10, 5, 40, 25, 1] 
    [1, 10, 25, 40, 5]

    可以看出它並沒有按照數字大小進行排序,而是按照字符串的方式(先比較第一位,如果第一位相等依次比較后面的)。

  2. 對數字按照大小進行排序:
    function sortNumber(a,b)
    {
        return a - b
    }
    
    var arr = [10, 5, 40, 25, 1];
    
    document.write(arr + "<br />")
    document.write(arr.sort(sortNumber))

    輸出:

    [1, 10, 25, 40, 5]
    [1, 5, 10, 25, 40]

    若a-b大於0,則b排在前面;若a-b小於0,則a排在前面。若想按照降序排序,函數內可改為“return b - a;”。

  3. 對字符串進行排序:
    var arr = ["Alfredo", "Ronald", "salvador", "Alfredo", "Saryn"];
    
    document.write(arr + "<br />");
    document.write(arr.sort());

    輸出:

    ["Alfredo", "Ronald", "salvador", "Alfredo", "Saryn"]
    ["Alexander", "Alfredo", "Ronald", "Saryn", "salvador"]

    原理與例1類似。

  4. 同時按照兩種方式排序。需求是這樣的:“active”為1的排在前面,“active”為0的排在后面,然后分別按照“name”的字母順序進行排序:
    var arr= [{
        "name"  : "Alfredo",
        "active": 0
    }, {
        "name"  : "Alexander",
        "active": 0
    }, {
        "name"  : "Ronald",
        "active": 1
    }, {
        "name"  : "salvador",
        "active": 0
    }, {
        "name"  : "Saryn",
        "active": 1
    }];
    
    arr.sort(function (a, b) {
        return b.name < a.name;
    }).sort(function (a, b) {
        return b.active - a.active
    });

    輸出:

    [{
        "name"  : "Ronald",
        "active": 1
    }, {
        "name"  : "Saryn",
        "active": 1
    }, {
        "name"  : "Alexander",
        "active": 0
    }, {
        "name"  : "Alfredo",
        "active": 0
    }, {
        "name"  : "salvador",
        "active": 0
    }];

    我們是這樣處理的:首先按照字母的順序進行排序,然后把“active”為1的放在前面,“active”為0的放在后面。

 


免責聲明!

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



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