1. 程式人生 > 其它 >JS (JavaScript) 中陣列 Array.sort 排序

JS (JavaScript) 中陣列 Array.sort 排序

JavaScript中陣列的sort()方法主要用於對陣列的元素進行排序

  1. 原理
    arr.sort((m, u) => { ... return (number) }
    sort 的引數接收一個函式 或者 可以不傳參
    不傳引數的情況,也就是預設排序順序是根據字串Unicode碼點
    sort內的函式 返回值小於0, m排在u前面; 返回值等於 0, m,u相等順序不變; 返回值大於 0, m排在u後面
  2. 數值排序
          //升序

          var arr = [1, 2, 3, 11, 12, 4, 1, 3, 10];
          // var newArr = arr.sort((m,u)=>{return u - m});
          // 或者下邊這種寫法都可以
          var newArr = arr.sort(num);
          console.log(newArr); // [1, 1, 2, 3, 3, 4, 10, 11, 12] 
          function num (m,u){
              return m - u;                
          }


          //降序

          var arr = [1, 2, 3, 11, 12, 4, 1, 3, 10];
          // var newArr = arr.sort((m,u)=>{return u - m});
          // 或者下邊這種寫法都可以
          var newArr = arr.sort(num);
          console.log(newArr); // [1, 1, 2, 3, 3, 4, 10, 11, 12] 
          function num (m,u){
              return  u- m;                
          }
  1. 字串排序
        // 對字串陣列執行不區分大小寫的字母表排序
   
            // 字串的數字 或者字母 是同位置的字元的碼點相比較 當前位置碼點相等 繼續下一位置比較 直到得出不同或結束
            // 所以 '120' 和 '1190' '120' 比 '1190' 排後面  
            var arr = ['a', 'Ar', 'c', 'd', 'E', 'Fs', '120', '1190', 'ee']; 
            var newArr = arr.sort(num);
            console.log(newArr); 
            // 輸出 ['1190', '120', 'a', 'Ar', 'c', 'd', 'E', 'ee', 'Fs']
            function num (m,u){
                var a = m.toLowerCase();
                var b = u.toLowerCase();
                if (a < b) return -1;  
                if (a > b) return 1;
                return 0;        
            }

  1. 隨機排序
 
            // 隨機排序
            var arr = [2, 7, 2, 55, 66, 33, 2, 36, 8]; 
            var newArr = arr.sort(num);
            console.log(newArr); 
            // 輸出 [7, 33, 36, 55, 8, 66, 2, 2, 2]
            function num (m,u){
               return Math.random() < 0.5 ? 1 : -1;      
            }

  1. 陣列元素 是物件的 根據身高排序
            // 身高排序
            var arr = [
                {name:'張三',height:160,heightUnit:'cm'},                
                {name:'王五',height:180,heightUnit:'cm'},
                {name:'李四',height:170,heightUnit:'cm'},
            ]; 
            var newArr = arr.sort(num);
            console.log(newArr);             
            function num (m,u){
               return m.height - u.height     
            }