zoukankan      html  css  js  c++  java
  • 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不加大括号,只是最后一行加了缩进。排序出的结果总是不对,加了大括号后的顺序就是对的了。

  • 相关阅读:
    5(计算机网络)从物理层到MAC层
    3 (mysql实战) 事务隔离
    2 (mysql实战) 日志系统
    1 (msql实战) 基础架构
    498. (leetcode)对角线遍历
    图解jvm--(四)内存模型
    图解jvm--(三)类加载与字节码技术
    Java:CAS(乐观锁)
    如何搭建Swagger接口文档
    为什么redis cluster至少需要三个主节点?
  • 原文地址:https://www.cnblogs.com/lnlvinso/p/13341790.html
Copyright © 2011-2022 走看看