Js數組排序函數:sort()


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

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

語法:arrayObject.sort(fun)       數組對象.sort(排序函數)


如果調用該方法時沒有使用參數,將按照字符編碼的順序進行排序。也可以提供一個比較函數

作為參數,實現大小的排序。


例一:對數值型元素的數組進行大小排序

[html] view plain copy
  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);  



例二:對字符串類型元素數組進行排序
[html] view plain copy
  1. //當調用sort函數沒有給予參數時,默認根據字符編碼的順序進行排序  
  2. var arr = ["Apple", "Banana", "Orange"];  
  3. arr.sort();  
  4. alert(arr);  

例三:對象數組排序
[html] view plain copy
  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. }  


例四:根據多個屬性對 ‘對象數組’ 進行排序

[html] view plain copy
  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后前端妹子,愛編程,愛運營,愛折騰。
堅持總結工作中遇到的技術問題,堅持記錄工作中所所思所見,歡迎大家一起探討交流。




免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM