js實現的對象數組根據對象的鍵值進行排序代碼


有時候會遇到做展示數組的排序,由大到小和由小到大的切換:

var arr=[{id:1,webName:"螞蟻部落"},{id:2,webName:"網易"}];

function done(key,desc) {

  return function(a,b){

    //return desc ? ~~(parseInt(a[key]) < parseInt(b[key])) : ~~(parseInt(a[key]) > parseInt(b[key]));解決簡單的json數組還行,但是遇到復雜重復比較多的數就不行了

    return desc ? ((parseInt(a[key]) < parseInt(b[key]))?1:((parseInt(a[key]) > parseInt(b[key]))?-1:0)):((parseInt(a[key]) < parseInt(b[key]))?-1:((parseInt(a[key]) > parseInt(b[key]))?1:0))  //杠杠的,注意括號就是!

  }

}

console.log(arr.sort(done('webName',true)));

console.log(arr.sort(done('id',true)));

console.log(arr.sort(done('id',false)));

 

這是一個歸納總結了的,可字符可數字排序!

var sortBy= function (filed,rev,primer){
   rev = (rev) ? -1 : 1;
   return function (a, b) {
     a = a[filed];
     b = b[filed];
     if ( typeof (primer) != 'undefined' ) {
       a = primer(a);
       b = primer(b);
     }
     if (a < b) { return rev * -1; }
     if (a > b) { return rev * 1; }
     return 1;
   }
};
var obj=[
   {b: '3' , c: 'c' },
   {b: '1' , c: 'a' },
   {b: '2' , c: 'b' }
];
obj.sort(sortBy( 'b' , false ,parseInt));
console.log(obj);

 


免責聲明!

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



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