• js实现多条件排序


    1.sort排序允许接受一个参数(函数),这个函数接受2个形参a,b,并且通过冒泡的方式比较。
    例子:
    Arr.sort((a,b) => a-b);   升序排列
    Arr.sort((a,b) => b-a);   降序排列
    排序原理:

    • 当返回值为负数时,那么前面的数在前面,也就是不动
    • 当返回值为正数时,那么后面的数在前
    • 为0,不动

    因此,我们设计多条件排序方法如下:
    数据结构设计如下:var data = {
    {name:“张三”,age:20,index:1},
    {name:“李四”,age:19,index:2},
    {name:“张三”,age:18,index:3},
    {name:“王五”,age:22,index:4},
    {name:“张三”,age:25,index:5},
    {name:“胖子”,age:30,index:6},
    {name:“李四”,age:13,index:7},
    }
    排列要求,先按名字进行排序,然后按照年龄进行排序,再按index进行排序
    处理函数:
    function dataSort(a,b){
    if(a['name'] == b['name']){
       if(a['age'] == b['age]){
          if(a['index'] < b['index']{
             return -1;
          }
      }else{
         if(a['age']<b['age']){
           return -1;
         }else{
           return 1;
        }
      }else{
         if(a['name] < b['name]){
            return -1;
         }else{
        return 1;
        }
    }
    }
    取得返回结果:
    [
    {name:“张三”,age:18,index:3},
    {name:“张三”,age:20,index:1},
    {name:“张三”,age:25,index:5},
    {name:“李四”,age:13,index:7},
    {name:“李四”,age:19,index:2},
    {name:“王五”,age:22,index:4},
    {name:“胖子”,age:30,index:6},

    总结:根据条件动态的返回1或者-1,进行排序可实现多条件排序的算法。

  • 相关阅读:
    抛开BlazeDS,自定义flex RPC
    设计模式学习03装饰器模式
    通过ANT生成MANIFEST.MF中的ClassPath属性
    Spring JDBCTemplate与Hiberante混用
    关于 两个 datetime 列的差别导致了运行时溢出
    在Wcf中使用Nhibernate (续)
    sql2005/sql2008 分页
    工行支付api查询asp.net C# 实现
    生成静态页面的vbscript
    Asp.net Mvc Post ID Bug
  • 原文地址:https://www.cnblogs.com/PingleDay/p/15741645.html
Copyright © 2020-2023  润新知