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



  • 相关阅读:
    webdav srs相关
    How To Configure WebDAV Access with Apache on Ubuntu 14.04
    ubuntu 编译lighttpd
    srs编译及推流测试
    Compile pciutils (lspci, setpci) in Windows x86,在 Windows x86 平台下编译 pciutils (lspci, setpci)
    mingw MSYS2 区别
    Qt之美(三):隐式共享
    Qt之美(二):元对象
    Qt之美(一):d指针/p指针详解
    C++的栈空间和堆空间
  • 原文地址:https://www.cnblogs.com/ting6/p/9725634.html
Copyright © 2011-2022 走看看