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

JavaScript对象数组排序实例方法浅析

在javascript中实现多维数组、对象数组排序,基本上都是用原生的sort()方法,用于对数组的元素进行排序。

其基本的用法就不说了,先看个简单的排序例子:

rush:js;"> //Sort alphabetically and ascending: var myarray=["Bob","Bully","Amy"] myarray.sort() //Array Now becomes ["Amy","Bob","Bully"]

数组直接调用sort()后,数组按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。

再来看看数字的排序:

rush:js;"> //Sort numerically and ascending: var myarray=[25,8,7,41] myarray.sort(function(a,b){return a - b}) //Array Now becomes [7,25,41]

sort(fun)接受了个排序规则函数,这个函数将比较2个数字的大小。而我们的对象数组排序,实际上原理也是一样的。

对于对象数组排序,我们先写一个构造比较函数函数

rush:js;"> //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 < typeof b ? -1 : 1; } else { throw ("error"); } } }

要排序的数组:

rush:js;"> var employees=[] employees[0]={name:"George",age:32,retiredate:"march 12,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:"April 30,2020"}

直接调用函数

rush:js;"> employees.sort(by("age"));

到这里,对象数组排序就算基本实现了。那如何实现多个键值排序呢?意思就是先是对age排序,如果age相同,再比较name。 这时,我们可以进一步修改by函数,让其可以接受第二个参数,当主要的键值产生一个匹配的时候,另一个compare方法将被调用以决出高下。

rush:js;"> //by函数接受一个成员名字符串和一个可选的次要比较函数做为参数 //并返回一个可以用来包含该成员的对象数组进行排序的比较函数 //当o[age] 和 p[age] 相等时,次要比较函数被用来决出高下 var by = function(name,minor){ return function(o,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 .sort(by('age',by('name')));

好了,现在可以放心使用了。如果看不懂,可直接copy 这个by函数到你的应用里面,直接调用即可。

以上所述是小编给大家介绍的JavaScript对象数组排序实例方法浅析的全部叙述。编程之家 jb51.cc 收集整理的教程希望能对你有所帮助,如果觉得编程之家不错,可分享给好友!感谢支持

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

相关推荐