微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

JavaScript对象数组排序函数及六个用法

分享一个用于数组或者对象的排序的函数。该函数可以以任意深度的数组或者对象的值作为排序基数对数组或的元素进行排序。

代码如下:

rush:js;"> /** * 排序数组或者对象 * 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 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 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

用法如下:

用法1:

rush:js;"> var data = { "a": { "session_offline":,"session_online":,"session_count": },"b": { "session_offline":,"c": { "session_offline":,"d": { "session_offline":,"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:

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

用法3:

rush:js;"> var data = [,]; //对一维数组进行升序排序 data = sort_object(data); console.log(data); //对一维数组进行降序排序 data = sort_object(data,null,true); console.log(data);

用法4:

rush:js;"> 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:

rush:js;"> var data = { "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:

rush:js;"> var data = [ [ { "a": },],[ { "a": },] ]; //对数组的元素以下标为的元素的键名为a的值为基础进行升序排序 data = sort_object(data,[,'a']); for(var k = ; k

以上内容是小编给大家分享的JavaScript对象数组排序函数及六个用法的全部叙述,希望大家喜欢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐