zoukankan      html  css  js  c++  java
  • Js数组排序函数:sort()

    原文链接:https://blog.csdn.net/qq_37936542/article/details/78979521

    js原生的 sort() 排序函数使用起来很方便

    语法:arrayObject.sort(fun)       数组对象.sort(排序函数)


    如果调用该方法时没有使用参数,将按照字符编码的顺序进行排序。也可以提供一个比较函数

    作为参数,实现大小的排序。


    例一:对数值型元素的数组进行大小排序

    1. //定义一个比较函数  
    2. //升序排序  
    3. function NumAscSort(a,b)  
    4. {  
    5.  return a - b;  
    6. }  
    7.   
    8. //降序排序  
    9. function NumDescSort(a,b)  
    10. {  
    11.  return b - a;  
    12. }  
    13.   
    14. //定义数组  
    15. var arr = new Array( 10, 30, 15, 45, 8);   
    16.   
    17. //对数组进行升序排序  
    18. arr.sort(NumAscSort);  
    19. alert(arr);  
    20.   
    21. //对数组进行降序排序  
    22. arr.sort(NumDescSort);  
    23. alert(arr);  



    例二:对字符串类型元素数组进行排序
    1. //当调用sort函数没有给予参数时,默认根据字符编码的顺序进行排序  
    2. var arr = ["Apple", "Banana", "Orange"];  
    3. arr.sort();  
    4. alert(arr);  

    例三:对象数组排序
    1. //定义compare函数,参数name是对象的某一个属性,比如age、salary  
    2. //返回一个可以用来对包含该成员的对象数组进行排序的比较函数  
    3. var compare = function(name){  
    4.  return function(o, p){  
    5.    var a, b;  
    6.    if (typeof o === "object" && typeof p === "object" && o && p) {  
    7.      a = o[name];  
    8.      b = p[name];  
    9.      if (a === b) {  
    10.        return 0;  
    11.      }  
    12.      if (typeof a === typeof b) {  
    13.        return a < b ? -1 : 1;  
    14.      }  
    15.      return typeof a < typeof b ? -1 : 1;  
    16.    }  
    17.    else {  
    18.      throw ("error");  
    19.    }  
    20.  }  
    21. }  
    22.   
    23.   
    24. //定义员工对象数组    
    25. var emp=[];    
    26. emp[0]={name:"xiaoming", age:32, salary:11000};    
    27. emp[1]={name:"xiaohong", age:17, salary:23000};    
    28. emp[2]={name:"dahuang", age:58, salary:9000};    
    29. emp[3]={name:"dajiji", age:62, salary:15000};    
    30. <span style="white-space:pre">          </span>    
    31. <span style="white-space:pre">          </span>    
    32. //排序    
    33. emp.sort(compare("age"));    
    34. <span style="white-space:pre">  </span>  
    35. for(var i = 0;i<emp.length; i++){  
    36.    alert(emp[i].age)  
    37. }  


    例四:根据多个属性对 ‘对象数组’ 进行排序

    1. //定义compare函数,name是对象的某一个属性,fun是一个比较函数  
    2. var compare = function(name,fun){  
    3.  return function(o,p){  
    4.    var a,b;  
    5.    if(o && p && typeof o === 'object' && typeof p ==='object'){  
    6.      a = o[name];  
    7.      b = p[name];  
    8.      //当o[name] 和 p[name] 相等时,利用fun函数根据另一个属性来进行比较  
    9.      if(a === b){  
    10.        return typeof minor === 'function' ? fun(o,p):0;  
    11.      }  
    12.      if(typeof a === typeof b){  
    13.        return a < b ? -1:1;  
    14.      }  
    15.      return typeof a < typeof b ? -1 : 1;  
    16.    }else{  
    17.      thro("error");  
    18.    }  
    19.  }  
    20. }  
    21.    
    22. //定义员工对象数组  
    23. var emp=[];  
    24. emp[0]={name:"xiaoming", age:32, salary:11000};  
    25. emp[1]={name:"xiaohong", age:62, salary:23000};  
    26. emp[2]={name:"dahuang", age:58, salary:9000};  
    27. emp[3]={name:"dajiji", age:62, salary:15000};  
    28.   
    29.   
    30. //先根据age排序,age相等时,根据工资排序  
    31. emp.sort(compare('age',compare('salary')));    
    32. <span style="white-space:pre">      </span>  
    33. for(var i = 0;i<emp.length; i++){  
    34. <span style="white-space:pre">  </span>alert(emp[i].name)  
    35. }  

    文末福利:

    福利一:前端,Java,产品经理,微信小程序,Python等10G资源合集大放送:https://www.jianshu.com/p/e8197d4d9880

    福利二:微信小程序入门与实战全套详细视频教程

    【领取方法】

    关注 【编程微刊】微信公众号:

    回复【小程序demo】一键领取130个微信小程序源码demo资源。

    回复【领取资源】一键领取前端,Java,产品经理,微信小程序,Python等资源合集10G资源大放送。


    image

    原文作者:祈澈姑娘
    原文链接:https://www.jianshu.com/u/05f416aefbe1
    创作不易,转载请告知

    90后前端妹子,爱编程,爱运营,爱折腾。
    坚持总结工作中遇到的技术问题,坚持记录工作中所所思所见,欢迎大家一起探讨交流。



  • 相关阅读:
    BZOJ 1008 [HNOI2008]越狱 (简单排列组合 + 快速幂)
    BZOJ 1007 [HNOI2008]水平可见直线 (栈)
    Java Date,long,String 日期转换
    android学习---- WindowManager 接口 (
    ListView 使用详解
    @synchronized (object)使用详解
    Android View坐标getLeft, getRight, getTop, getBottom
    Android:Layout_weight的深刻理解
    onTouch事件试验(覆写onTouchEvent方法,同时设置onTouchListener)
    FragmentPagerAdapter与FragmentStatePagerAdapter区别
  • 原文地址:https://www.cnblogs.com/wangting888/p/9701630.html
Copyright © 2011-2022 走看看