zoukankan      html  css  js  c++  java
  • 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);
  • 相关阅读:
    源代码的下载和编译
    搭建Android开发环境
    Git使用入门
    Android系统构架
    Android深度探索心得<9>
    Android深度探索心得<10>
    Android深度探索心得<8>
    android深度探索xinde < 7>
    android深度探索xinde < 5>
    android深度探索xinde < 6>
  • 原文地址:https://www.cnblogs.com/qiuzhimutou/p/5774558.html
Copyright © 2011-2022 走看看