每一个网站背后都有一个故事!  会员中心 会员登录   设为首页 设为首页   加入收藏 收藏百万站   百万学院 百万学院  
 
 
您当前位置:百万站 > 乐园 > 百万学院 > 编程知识
»点此完善

百万站官网资料-javascript对象数组排序函数分享

javascript对象数组排序函数分享

javascript实现多维数组、对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序。

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

//Sort alphabetically and ascending:
var myarray=["Bob", "Bully", "Amy"]
myarray.sort() //Array now becomes ["Amy", "Bob", "Bully"]

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

再来看看数字的排序:

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

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

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

//bybaiwanzhan函数接受一个成员名字符串做为参数
//并返回一个可以用来对包含该成员的对象数组进行排序的比较函数
var bybaiwanzhan = 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");
 }
 }
}

要排序的数组:

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"}

直接调用函数:

employees.sort(bybaiwanzhan("age"));

到这里,对象数组排序就算基本实现了。那如何实现多个键值排序呢?意思就是先是对age排序,如果age相同,再比较name。

这时,我们可以进一步修改by函数,让其可以接受第二个参数,当主要的键值产生一个匹配的时候,另一个compare方法将被调用以决出高下。

//并返回一个可以用来包含该成员的对象数组进行排序的比较函数
//当o[age] 和 p[age] 相等时,次要比较函数被用来决出高下
var bybaiwanzhan = 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   }
  return typeof a < typeof b ? -1 : 1;
 }else{
  thro("error");
 }
 }
}

employees.sort(bybaiwanzhan('age',by('name')));

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

φ金〃

百万网站 www.baiwanzhan.Com
上一站:  HTTP_USER_AGENT为null的原因分析
当前推荐网站:  javascript对象数组排序函数分享
下一站:  C#程序员应怎样提高C#编程水平?


申明:本资料由百万站会员提供,转载请注明出处,资料来源百万站网站知识库:http://www.baiwanzhan.com/site/t122851/.
javascript对象数组排序函数分享 感谢您的支持!

»如果您觉得'javascript对象数组排序函数分享'相关资料不全,请点此协作更新!
复制本页网址,与您QQ/MSN上的好友分享,就是您对百万站最大的支持!
踩踩此网站0
支持此网站0
(提示:顶到百万站首页,分享给更多网友!)  
现在有0人对'本文'发表评论 »查看全部评论

您的姓名: * 可选项,留空即为匿名发表
评论内容:
剩余字数:  * 按 Ctrl + Enter 发送.
           
百万站温馨提示:资料由百万站会员自行发布,请大家自辩真伪;评论只需提交一次,请耐心等候审核通过,方可显示.
»网友留言

javascript对象数组排序函数分享

贡献者:web004点击数: 累积有6687人浏览
所属类别:编程知识主页标签:
参考网址:»点此进入
导航目录:乐园 > 百万学院 > 编程知识
内容简介:javascript实现多维数组、对象数组排序,其实用的就是原生的sort()方法,用于对数组的元素进行排序。
2019,与百万网友携手打造百万站!
百万站-百万优秀网站的大本营!我们深信:每一个优秀网站的背后都有一个值得我们解读的故事。