js 對象數組按照多個字段進行排序


  Array.sort(); 

  sort()方法可以傳入一個函數作為參數,然后依據該函數的邏輯,進行數組的排序。默認的是ascii碼排序。

  一般用法:(數組元素從小大進行排序)

var a = [9, 6, 5, 7, 11, 52, 15];
a.sort(function(return a-b;));

   sort()方法,接收了一個函數作為參數時,排序主要根據傳入函數的返回值是否大於0進行排序。

          1)當 a - b < 0  時, 則 a 元素排在 b 元素的前面。

           2) 當 a - b = 0 時, a , b 元素的位置不變。

           3) 當 a - b > 0 是, 則 b 元素排在 a 元素的前面。

 

         sort()還可以按照多個字段進行排序。debug了下,是按照冒泡法進行的排序。不過速度還是蠻快的,快200個對象,不到1S就排序完成,不影響用戶的體驗。

mysort(a,b){
       if(a.age !== b.age){
            return a.age < b.age ? -1 : 1;
        }
        else if(a.name !== b.name){
            return a.name < b.name ? -1 : 1;
        }
        else{
            return a.id - b.id;
        }
}

arr = [
{name:"alie",age:20,id:20011},
{},
...
];

arr.sort(mysort);

  

         有個稍微要注意的就是最后一個else是用大括號括起來的。我調試的時候java寫的習慣了,最后一個else不加大括號,只是最后一行加了縮進。排序出的結果總是不對,加了大括號后的順序就是對的了。


免責聲明!

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



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