原文鏈接:https://blog.csdn.net/qq_37936542/article/details/78979521
js原生的 sort() 排序函數使用起來很方便
語法:arrayObject.sort(fun) 數組對象.sort(排序函數)
如果調用該方法時沒有使用參數,將按照字符編碼的順序進行排序。也可以提供一個比較函數
作為參數,實現大小的排序。
例一:對數值型元素的數組進行大小排序
- //定義一個比較函數
- //升序排序
- function NumAscSort(a,b)
- {
- return a - b;
- }
- //降序排序
- function NumDescSort(a,b)
- {
- return b - a;
- }
- //定義數組
- var arr = new Array( 10, 30, 15, 45, 8);
- //對數組進行升序排序
- arr.sort(NumAscSort);
- alert(arr);
- //對數組進行降序排序
- arr.sort(NumDescSort);
- alert(arr);
例二:對字符串類型元素數組進行排序
- //當調用sort函數沒有給予參數時,默認根據字符編碼的順序進行排序
- var arr = ["Apple", "Banana", "Orange"];
- arr.sort();
- alert(arr);
例三:對象數組排序
- //定義compare函數,參數name是對象的某一個屬性,比如age、salary
- //返回一個可以用來對包含該成員的對象數組進行排序的比較函數
- var compare = function(name){
- return function(o, p){
- var a, b;
- if (typeof o === "object" && typeof p === "object" && o && p) {
- a = o[name];
- b = p[name];
- if (a === b) {
- return 0;
- }
- if (typeof a === typeof b) {
- return a < b ? -1 : 1;
- }
- return typeof a < typeof b ? -1 : 1;
- }
- else {
- throw ("error");
- }
- }
- }
- //定義員工對象數組
- var emp=[];
- emp[0]={name:"xiaoming", age:32, salary:11000};
- emp[1]={name:"xiaohong", age:17, salary:23000};
- emp[2]={name:"dahuang", age:58, salary:9000};
- emp[3]={name:"dajiji", age:62, salary:15000};
- <span style="white-space:pre"> </span>
- <span style="white-space:pre"> </span>
- //排序
- emp.sort(compare("age"));
- <span style="white-space:pre"> </span>
- for(var i = 0;i<emp.length; i++){
- alert(emp[i].age)
- }
例四:根據多個屬性對 ‘對象數組’ 進行排序
- //定義compare函數,name是對象的某一個屬性,fun是一個比較函數
- var compare = function(name,fun){
- return function(o,p){
- var a,b;
- if(o && p && typeof o === 'object' && typeof p ==='object'){
- a = o[name];
- b = p[name];
- //當o[name] 和 p[name] 相等時,利用fun函數根據另一個屬性來進行比較
- if(a === b){
- return typeof minor === 'function' ? fun(o,p):0;
- }
- if(typeof a === typeof b){
- return a < b ? -1:1;
- }
- return typeof a < typeof b ? -1 : 1;
- }else{
- thro("error");
- }
- }
- }
- //定義員工對象數組
- var emp=[];
- emp[0]={name:"xiaoming", age:32, salary:11000};
- emp[1]={name:"xiaohong", age:62, salary:23000};
- emp[2]={name:"dahuang", age:58, salary:9000};
- emp[3]={name:"dajiji", age:62, salary:15000};
- //先根據age排序,age相等時,根據工資排序
- emp.sort(compare('age',compare('salary')));
- <span style="white-space:pre"> </span>
- for(var i = 0;i<emp.length; i++){
- <span style="white-space:pre"> </span>alert(emp[i].name)
- }
文末福利:
福利一:前端,Java,產品經理,微信小程序,Python等10G資源合集大放送:https://www.jianshu.com/p/e8197d4d9880
福利二:微信小程序入門與實戰全套詳細視頻教程
【領取方法】
關注 【編程微刊】微信公眾號:
回復【小程序demo】一鍵領取130個微信小程序源碼demo資源。
回復【領取資源】一鍵領取前端,Java,產品經理,微信小程序,Python等資源合集10G資源大放送。
原文作者:祈澈姑娘
原文鏈接:https://www.jianshu.com/u/05f416aefbe1
創作不易,轉載請告知
90后前端妹子,愛編程,愛運營,愛折騰。
堅持總結工作中遇到的技術問題,堅持記錄工作中所所思所見,歡迎大家一起探討交流。
