JS中sort()方法的原理


  原理

  JS中的sort()方法用於對數組進行排序,並返回數組。

  默認情況下按升序排列數組,但是是根據字符串UniCode碼進行比較。sort()方法進行排序時會在每一項上調用String()轉型函數,然后通過字符串UniCode碼來決定順序,即使數組的元素都是number類型,也會把它轉換成字符串再比較。

  為此,sort()方法可以接受一個參數,此參數為函數,從而達到我們想要的比較效果。

 

  使用

  沒有傳入參數時:

var arr = [2,15,8,11,7,4];
console.log(arr.sort());  //11 15 2 4 7 8

  顯而易見,這不是我們想要的效果,但是我們可以在sort()方法里面傳入一個比較函數來達到我們想要的效果:

/**
     * 比較函數:接收兩個參數
     * @param val1
     * @param val2
     * @returns {number}
     */
    function compare(val1,val2){
        if (val1 < val2){
            return -1;
        }else if(val1 > val2){
            return 1;
        }else {
            return 0;
        }
    }
    var arr = [2,15,8,11,7,4];
    console.log(arr.sort(compare)); //2 4 7 8 11 15

  可以把返回值1和-1換一下位置達到降序。此外,這個比較函數還可以簡寫成箭頭函數:

var arr = [2,15,8,11,7,4];
arr.sort((a,b) => a < b ? 1:a > b ? -1:0)
console.log(arr);    //15 11 8 7 4 2

 


免責聲明!

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



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