麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > JavaScript > 正文

JavaScript對象數組排序函數及六個用法

2024-05-06 16:26:49
字體:
來源:轉載
供稿:網友
本文給大家分享一個用于數組或者對象的排序的函數。該函數可以以任意深度的數組或者對象的值作為排序基數對數組或的元素進行排序
 

分享一個用于數組或者對象的排序的函數。該函數可以以任意深度的數組或者對象的值作為排序基數對數組或的元素進行排序。

代碼如下:

 /**  * 排序數組或者對象  * by Jinko  * date --  * @param object 數組或對象  * @param subkey 需要排序的子鍵, 該參數可以是字符串, 也可以是一個數組  * @param desc 排序方式, true:降序, false|undefined:升序  * @returns {*} 返回排序后的數組或者對象  *  * 注意: 對于對象的排序, 如果使用console.log打印對象的顯示可能和排序結果不一致,  *  其鍵會被瀏覽器以字母順序排序顯示,但在for循環中則為正確的排序順序  */ function sort_object(object, subkey, desc) {   var is_array = false;   if(Object.prototype.toString.call(object) === '[object Array]') {     is_array = true;   }   if(is_array) {     var keys = {length:object.length};   } else {     if(typeof(Object.keys) == 'function') {       var keys = Object.keys(object);     } else{       var keys = [];       for(var key in keys) {         keys.push(key);       }     }   }   for(var i=; i<keys.length; i++) {     for(var j=i+; j<keys.length; j++) {       if(is_array) {         //數組排序         if(Object.prototype.toString.call(subkey) === '[object Array]') {           var vali = object[i];           var valj = object[j];           for(var si=; si<subkey.length; si++) {             vali = vali[ subkey[si] ];             valj = valj[ subkey[si] ];           }         } else {           if((!subkey && subkey !== ) || subkey == '' && object.sort) {             var vali = object[i];             var valj = object[j];           } else {             var vali = object[i][subkey];             var valj = object[j][subkey];           }         }         if(desc) {           if(valj > vali) {             var tmp = object[i];             object[i] = object[j];             object[j] = tmp;           }         } else {           if(valj < vali) {             var tmp = object[i];             object[i] = object[j];             object[j] = tmp;           }         }       } else {         //對象排序         var obi = object[ keys[i] ];         var obj = object[ keys[j] ];         if(Object.prototype.toString.call(subkey) === '[object Array]') {           var vali = obi;           var valj = obj;           for(var si=; si<subkey.length; si++) {             vali = vali[ subkey[si] ];             valj = valj[ subkey[si] ];           }         } else {           if((!subkey && subkey !== ) || subkey == '' && object.sort) {             var vali = obi;             var valj = obj;           } else {             var vali = obi[subkey];             var valj = obj[subkey];           }         }         if(desc) {           if(valj > vali) {             var tmp = keys[i];             keys[i] = keys[j];             keys[j] = tmp;           }         } else {           if(valj < vali) {             var tmp = keys[i];             keys[i] = keys[j];             keys[j] = tmp;           }         }       }//is!array     }   }   if(is_array) {     return object;   } else {     var sorted = {};     for(var i=; i<keys.length; i++) {       sorted[ keys[i] ] = object[ keys[i] ];     }     return sorted;   } } //sort_object 

用法如下:

用法1: 

 var data = {   "a": {     "session_offline": ,     "session_online": ,     "session_count":    },   "b": {     "session_offline": ,     "session_online": ,     "session_count":    },   "c": {     "session_offline": ,     "session_online": ,     "session_count":    },   "d": {     "session_offline": ,     "session_online": ,     "session_count":    } }; //根據session_online字段升序排序 data = sort_object(data, 'session_online'); for(var k in data) {   console.log(data[k]); } console.log('------------------'); //根據session_offline字段降序排序 data = sort_object(data, 'session_offline', true); for(var k in data) {   console.log(data[k]); } 

 用法2:

var data = [   {     "cpu": ,     "cpuhz": ,     "cpuhz_use": ,   },   {     "cpu": ,     "cpuhz": ,     "cpuhz_use": ,   },   {     "cpu": ,     "cpuhz": ,     "cpuhz_use": ,   },   {     "cpu": ,     "cpuhz": ,     "cpuhz_use": ,   } ]; //根據cpuhz_use字段進行排序 data = sort_object(data, 'cpuhz_use'); console.log(data); 

 用法3:

 var data = [,,,,,,,]; //對一維數組進行升序排序 data = sort_object(data); console.log(data); //對一維數組進行降序排序 data = sort_object(data, null, true); console.log(data); 

 用法4:

 var data = {'a':, 'b':, 'c':, 'd':}; //對對象進行升序排序 data = sort_object(data); //對對象進行降序排序 data = sort_object(data, '', true); for(var k in data) {   console.log(k, ':', data[k]); } 

 用法5:

 var data = {   "l_": {     "l": {       "l":      }   },   "l_": {     "l": {       "l":      }   },   "l_": {     "l": {       "l":      }   },   "l_": {     "l": {       "l":      }   } }; //對對象元素的l下的l的值為基礎進行升序排序 data = sort_object(data, ['l', 'l']); for(var k in data) {   console.log(data[k].l); } 

 用法6:

var data = [   [     {       "a":      },     ,   ],   [     {       "a":      },     ,   ],   [     {       "a":      },     ,   ] ]; //對數組的元素以下標為的元素的鍵名為a的值為基礎進行升序排序 data = sort_object(data, [,'a']); for(var k = ; k<data.length; k++) {   console.log(data[k]); } console.log('---------------------'); //對數組的元素以下標為的元素的值為基礎進行升序排序 data = sort_object(data, []); // 等價于 data = sort_object(data, ); for(var k = ; k<data.length; k++) {   console.log(data[k]); }

以上內容是小編給大家分享的JavaScript對象數組排序函數及六個用法的全部敘述,希望大家喜歡。



注:相關教程知識閱讀請移步到JavaScript/Ajax教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表

圖片精選

主站蜘蛛池模板: 99精品视频久久精品视频 | 久久久久99精品 | 亚洲午夜免费电影 | 精品亚洲一 | 日韩黄站 | 欧美一级高潮 | 久久国语对白 | 久久久无码精品亚洲日韩按摩 | 奶子吧naiziba.cc免费午夜片在线观看 | 亚洲欧美国产视频 | 国产精品亚洲一区二区三区在线观看 | 91久久久国产精品 | 欧产日产国产精品99 | 国产精品久久久久久久久久 | 热re91久久精品国产99热 | 91久久夜色精品国产网站 | 在线高清中文字幕 | 色玖玖综合 | 久久久久国产成人精品亚洲午夜 | 国产精品视频自拍 | 91av在线免费视频 | 国产精品一区在线观看 | 日本黄色大片免费观看 | 欧美激情精品久久久久 | 亚洲第一黄色网 | 牛牛a级毛片在线播放 | 一分钟免费观看完整版电影 | 欧美 亚洲 激情 | 91精品国产一区二区在线观看 | 日本不卡一区二区三区在线观看 | 91美女福利视频 | 亚洲国产精品久久久久久久久 | 国产成人自拍视频在线观看 | 国产成人在线播放视频 | 99精品国产成人一区二区 | 久久一区三区 | 中文字幕在线观看视频一区 | 久久国产精品二国产精品中国洋人 | 亚洲码无人客一区二区三区 | 日本在线国产 | 羞羞视频免费网站入口 |