js實現數據類型升序、降序方法(適用大部分數據類型)

今天在書上看到兩個方法,一個升序方法一個降序方法,記錄下來供以後參考!

javascript提供瞭兩個相關方法
severse() 顛倒數組順序;
sort()升序排列數組項

var arr = [1,5,2,10,15];
console.log(arr.sort());    //[1, 10, 15, 2, 5]

但是sort()方法會根據測試字符串的結果改變順序,因為數值5雖然小於10,但在進行字符串比較時,”10”則位於”5”的前邊,於是數組的順序就被修改瞭(如上邊代碼所示)。
不用說,這種順序方式在很多情況下都不是最佳方案。因此sort()方法可以接受一個比較函數作為參數,一遍我們指定哪個值位於哪個值的前面。
比較函數接受兩個參數,如果第一個參數應該位於第二個之前則返回一個負數,如果兩個參數相等則返回0,如果第一個參數應該位於第二個之後則返回第一個正數。
代碼如下:

var arr = [1,5,2,10,15]; 
    //var arr = ['a','g','f','s','c'];     
    //var arr = ['hao','an','you','to','happly','hot'];
    function compare(value1,value2){
        if(value1 < value2){
            return -1;
        }else if(value1 > value2){
            return 1;
        }else{
            return 0;
        }
    }
    arr.sort(compare);
    console.log(arr);

三個不同內容數組返回結果如下:

//[1, 2, 5, 10, 15]
//["a", "c", "f", "g", "s"]
//["an", "hao", "happly", "hot", "to", "you"]

降序排序方法 和上邊的代碼差不多,通過交換比較函數的返回值即可!
在下邊的例子中,比較函數在第一個值應該位於第二個之後的情況下返回1,而在第一個值應該在第二個之前的情況下返回-1。交換返回值的意思時讓更大的值排位更靠前,也就是對數組按照降序排序。

代碼如下:

var arr = [1,5,2,10,15];
    //var arr = ['a','g','f','s','c'];
    //var arr = ['hao','an','you','to','happly','hot'];

    function compare(value1,value2){
        if(value1 < value2){
            return 1;
        }else if(value1 > value2){
            return -1;
        }else {
            return 0;
        }
    }
    arr.sort(compare);
    console.log(arr);

三個數組返回值如下:

//[15, 10, 5, 2, 1]
//["s", "g", "f", "c", "a"]
//["you", "to", "hot", "happly", "hao", "an"]

如果隻想反轉數組原來的順序,使用severse()方法要更快一些。

發佈留言