亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

Js數組排序函數sort()介紹

2024-04-27 15:17:38
字體:
來源:轉載
供稿:網友


javaScript實現多維數組、對象數組排序,其實用的就是原生的sort()方法,用于對數組的元素進行排序。

sort()方法用于對數組的元素進行排序。語法如下:

arrayObject.sort(sortby)

返回值為對數組的引用。請注意,數組在原數組上進行排序,不生成副本。

如果調用該方法時沒有使用參數,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。要實現這一點,首先應把數組的元素都轉換成字符串(如有必要),以便進行比較。

如果想按照其他標準進行排序,就需要提供比較函數,該函數要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數字。比較函數應該具有兩個參數 a和 b,其返回值如下:

若 a小于 b,在排序后的數組中 a 應該出現在 b之前,則返回一個小于 0 的值。

若 a等于 b,則返回 0。

若 a大于 b,則返回一個大于 0 的值。

?12345678910111213function NumAscSort(a,b){ return a -b;}function NumDescSort(a,b){ return b - a;}var arr = new Array( 3600, 5010,10100, 801); arr.sort(NumDescSort);alert(arr);arr.sort(NumAscSort);alert(arr);

sort(fun)接受了個排序規則函數,這個函數將比較2個數字的大小。而我們的對象數組排序,實際上原理也是一樣的。

如果不比較數字的大小,則可以這樣:

?12var myarray=["Apple", "Banana","Orange"]myarray.sort()

數組直接調用sort()后,數組按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。

對于對象數組排序,我們先寫一個構造比較函數的函數:

?123456789101112131415161718192021//by函數接受一個成員名字符串做為參數//并返回一個可以用來對包含該成員的對象數組進行排序的比較函數var by = 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 < typeofb ? -1 : 1;   }  else {    throw ("error");   } }}

要排序的數組:

?12345varemployees=[]employees[0]={name:"George", age:32, retiredate:"March12, 2014"}employees[1]={name:"Edward", age:17,retiredate:"June 2, 2023"}employees[2]={name:"Christine",age:58, retiredate:"December 20,2036"}employees[3]={name:"Sarah", age:62, retiredate:"APRil30, 2020"}

直接調用函數:

?1employees.sort(by("age"));

到這里,對象數組排序就算基本實現了。那如何實現多個鍵值排序呢?意思就是先是對age排序,如果age相同,再比較name。

這時,我們可以進一步修改by函數,讓其可以接受第二個參數,當主要的鍵值產生一個匹配的時候,另一個compare方法將被調用以決出高下。

?1234567891011121314151617181920212223//by函數接受一個成員名字符串和一個可選的次要比較函數做為參數//并返回一個可以用來包含該成員的對象數組進行排序的比較函數//當o[age]和 p[age] 相等時,次要比較函數被用來決出高下var by = function(name,minor){ return function(o,p){  var a,b;  if(o && p && typeof o === 'object' && typeof p==='object'){    a = o[name];     b = p[name];     if(a === b){       return typeof minor === 'function' ? minor(o,p):0;    }    if(typeof a === typeof b){      return a < b ? -1:1;    }     return typeof a < typeof b ? -1 :1;  }else{     thro("error");   } }} employees.sort(by('age',by('name')));

好了,現在可以放心使用了。如果看不懂,可直接copy這個by函數到你的應用里面,直接調用即可。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品欧美激情| 欧美日本高清一区| 欧美精品videos性欧美| 国产91色在线免费| 日韩中文在线中文网在线观看| 日本精品视频网站| 日韩69视频在线观看| 成人国产精品av| 日韩在线观看你懂的| 51精品国产黑色丝袜高跟鞋| 萌白酱国产一区二区| 日韩视频免费在线| 日本精品va在线观看| 国产亚洲日本欧美韩国| 欧美成人久久久| 国产成人免费av电影| 欧美激情在线观看视频| 欧美情侣性视频| 欧美性猛交xxxx乱大交蜜桃| 欧美成人免费一级人片100| 亚洲人午夜色婷婷| 一区二区三区久久精品| 91精品免费久久久久久久久| 91精品久久久久久综合乱菊| 国产香蕉97碰碰久久人人| 亚洲精品国产精品自产a区红杏吧| 91精品国产自产在线老师啪| 亚洲自拍偷拍色图| 亚洲精品mp4| 精品国产91久久久久久| 久久久精品视频成人| 国产欧美日韩亚洲精品| 亚洲精品国产福利| 久久韩剧网电视剧| 亚洲伊人久久综合| 国产成人精品亚洲精品| 中文字幕精品视频| 久久精品免费播放| 亚洲桃花岛网站| 亚洲精品综合精品自拍| 在线中文字幕日韩| 裸体女人亚洲精品一区| 日韩av成人在线| 日韩在线观看免费| 亚洲国产97在线精品一区| 日韩欧美亚洲成人| 久久久久免费视频| 国产成人精品av| 欧美一区二区三区四区在线| 日韩中文字幕第一页| 在线播放日韩av| 91av网站在线播放| 一区二区三区四区视频| 欧美激情xxxx| 亚洲第一区在线观看| 韩日欧美一区二区| 91精品国产色综合久久不卡98口| www.亚洲免费视频| 在线播放日韩专区| 日本欧美中文字幕| 成人妇女免费播放久久久| 久久精品99久久香蕉国产色戒| 欧美激情中文字幕在线| 欧美日韩午夜视频在线观看| 国产精品视频精品视频| 日韩中文视频免费在线观看| 中文字幕av一区二区| 亚洲精品国产综合久久| 992tv成人免费影院| 欧美一区二区视频97| 久久免费少妇高潮久久精品99| 亚洲电影免费观看高清| 久久久国产精彩视频美女艺术照福利| 美日韩精品免费观看视频| 久久久久久999| 午夜精品久久久久久久99热浪潮| 国产亚洲一级高清| 一本一本久久a久久精品牛牛影视| 久久久国产成人精品| 久久久久久久久电影| 成人做爽爽免费视频| 欧美中在线观看| 国产精品视频地址| 成人激情电影一区二区| 精品久久久999| 伊人久久久久久久久久久| 欧美极品少妇xxxxⅹ裸体艺术| 精品久久久国产精品999| 色综合天天狠天天透天天伊人| 青青a在线精品免费观看| 在线亚洲男人天堂| 亚洲日本aⅴ片在线观看香蕉| 最近更新的2019中文字幕| 国产91精品久久久久| 亚洲国产天堂久久综合| 在线精品国产成人综合| 日本亚洲欧洲色| 日韩精品极品在线观看播放免费视频| 亚洲人成电影网站色| 狠狠色狠狠色综合日日五| 欧美肥臀大乳一区二区免费视频| 日韩美女av在线| 伊人伊成久久人综合网站| 欧美剧在线观看| 综合国产在线观看| 亚洲成人中文字幕| 欧美成人黑人xx视频免费观看| 中文字幕亚洲国产| 国产一区二区三区精品久久久| www.欧美免费| 久久久久国产精品一区| 亚洲成人网av| 精品国产户外野外| 日本精品va在线观看| 国产视频一区在线| 久久久久久久久国产| 成人网址在线观看| 国产精品精品视频| 欧美最猛性xxxxx免费| 色天天综合狠狠色| 国产精品网红福利| 在线观看亚洲区| 欧美理论电影网| 97国产一区二区精品久久呦| 91精品久久久久久久久不口人| 久久精品亚洲国产| 久久人人爽人人爽人人片av高清| 亚洲影院高清在线| 国产精品尤物福利片在线观看| 久久久久久999| 精品成人av一区| 在线观看精品自拍私拍| 久久人体大胆视频| 国产香蕉精品视频一区二区三区| 7777精品视频| 超碰97人人做人人爱少妇| 欧洲精品久久久| 欧美成人精品激情在线观看| 国产日韩欧美日韩| 免费91麻豆精品国产自产在线观看| 992tv在线成人免费观看| 成人激情春色网| 久久久之久亚州精品露出| 中文字幕亚洲在线| 亚洲精品mp4| 国产精品91视频| 国产精品免费久久久久影院| 久久成人人人人精品欧| 亚洲国产天堂久久综合| 456国产精品| 久久久久久久网站| 中文字幕日韩精品在线观看| 亚洲精品免费av| 成人激情在线观看| 成人做爽爽免费视频| 日韩精品在线第一页| 97涩涩爰在线观看亚洲| 国产日韩欧美夫妻视频在线观看| 亚洲电影天堂av| 最近2019中文免费高清视频观看www99| 欧美激情国产日韩精品一区18| 亚洲精品一区二区三区不| 亚洲美女免费精品视频在线观看| 亚洲国产成人久久综合一区|