国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁(yè) > 語(yǔ)言 > JavaScript > 正文

JavaScript對(duì)象數(shù)組排序函數(shù)及六個(gè)用法

2024-05-06 16:26:49
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友
本文給大家分享一個(gè)用于數(shù)組或者對(duì)象的排序的函數(shù)。該函數(shù)可以以任意深度的數(shù)組或者對(duì)象的值作為排序基數(shù)對(duì)數(shù)組或的元素進(jìn)行排序
 

分享一個(gè)用于數(shù)組或者對(duì)象的排序的函數(shù)。該函數(shù)可以以任意深度的數(shù)組或者對(duì)象的值作為排序基數(shù)對(duì)數(shù)組或的元素進(jìn)行排序。

代碼如下:

 /**  * 排序數(shù)組或者對(duì)象  * by Jinko  * date --  * @param object 數(shù)組或?qū)ο? * @param subkey 需要排序的子鍵, 該參數(shù)可以是字符串, 也可以是一個(gè)數(shù)組  * @param desc 排序方式, true:降序, false|undefined:升序  * @returns {*} 返回排序后的數(shù)組或者對(duì)象  *  * 注意: 對(duì)于對(duì)象的排序, 如果使用console.log打印對(duì)象的顯示可能和排序結(jié)果不一致,  *  其鍵會(huì)被瀏覽器以字母順序排序顯示,但在for循環(huán)中則為正確的排序順序  */ 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) {         //數(shù)組排序         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 {         //對(duì)象排序         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":    } }; //根據(jù)session_online字段升序排序 data = sort_object(data, 'session_online'); for(var k in data) {   console.log(data[k]); } console.log('------------------'); //根據(jù)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": ,   } ]; //根據(jù)cpuhz_use字段進(jìn)行排序 data = sort_object(data, 'cpuhz_use'); console.log(data); 

 用法3:

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

 用法4:

 var data = {'a':, 'b':, 'c':, 'd':}; //對(duì)對(duì)象進(jìn)行升序排序 data = sort_object(data); //對(duì)對(duì)象進(jìn)行降序排序 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":      }   } }; //對(duì)對(duì)象元素的l下的l的值為基礎(chǔ)進(jìn)行升序排序 data = sort_object(data, ['l', 'l']); for(var k in data) {   console.log(data[k].l); } 

 用法6:

var data = [   [     {       "a":      },     ,   ],   [     {       "a":      },     ,   ],   [     {       "a":      },     ,   ] ]; //對(duì)數(shù)組的元素以下標(biāo)為的元素的鍵名為a的值為基礎(chǔ)進(jìn)行升序排序 data = sort_object(data, [,'a']); for(var k = ; k<data.length; k++) {   console.log(data[k]); } console.log('---------------------'); //對(duì)數(shù)組的元素以下標(biāo)為的元素的值為基礎(chǔ)進(jìn)行升序排序 data = sort_object(data, []); // 等價(jià)于 data = sort_object(data, ); for(var k = ; k<data.length; k++) {   console.log(data[k]); }

以上內(nèi)容是小編給大家分享的JavaScript對(duì)象數(shù)組排序函數(shù)及六個(gè)用法的全部敘述,希望大家喜歡。



注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JavaScript/Ajax教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表

圖片精選

主站蜘蛛池模板: 安国市| 平山县| 平塘县| 华池县| 油尖旺区| 东乌珠穆沁旗| 平谷区| 阿拉善右旗| 庆安县| 西丰县| 思茅市| 扎鲁特旗| 合阳县| 通化市| 个旧市| 潜山县| 五莲县| 灵宝市| 定南县| 五台县| 文安县| 西吉县| 九寨沟县| 神农架林区| 淅川县| 通州区| 扎赉特旗| 平陆县| 山阴县| 棋牌| 肇源县| 靖远县| 南召县| 常熟市| 涟源市| 衢州市| 商都县| 彰化市| 龙山县| 贵德县| 黔江区|