JavaScript对象数组的排序处理方法


Posted in Javascript onOctober 21, 2015

本文实例讲述了JavaScript对象数组的排序处理方法。分享给大家供大家参考,具体如下:

javascript的数组排序函数 sort方法,默认是按照ASCII 字符顺序进行升序排列。
arrayobj.sort(sortfunction);

参数:sortFunction

可选项。是用来确定元素顺序的函数的名称。如果这个参数被省略,那么元素将按照 ASCII 字符顺序进行升序排列。

sort 方法将 Array 对象进行适当的排序;在执行过程中并不会创建新的 Array 对象。

如果为 sortfunction 参数提供了一个函数,那么该函数必须返回下列值之一:

负值,如果所传递的第一个参数比第二个参数小。
零,如果两个参数相等。
正值,如果第一个参数比第二个参数大。

以上的方法在一维的排序还是很方便的,但像SQL语句中的ORDER BY 一样的多键值排序由怎么做呢?

多维数组的多键值排序,则需要复杂一些,但不需要用循环解决。实际解决的道理是一样的 。

数字:

以下的例子是将数字的多维数组按照第5列,第9列,第3列的顺序排序,像SQL语句中的ORDER BY col5,col9,col7。数字的时候可以直接两个项目相减,以结果作为返回值即可。

<script language=javascript>
 var myArray = new Array();
 for(var i=0;i<10;i++ ){
 myArray[i]=new Array();
 myArray[i][0]=Math.floor(Math.random()*10); 
 myArray[i][1]=Math.floor(Math.random()*10);
 myArray[i][2]=Math.floor(Math.random()*10);
 myArray[i][3]=Math.floor(Math.random()*10);
 myArray[i][4]=Math.floor(Math.random()*10);
 myArray[i][5]=Math.floor(Math.random()*10);
 myArray[i][6]=Math.floor(Math.random()*10);
 myArray[i][7]=Math.floor(Math.random()*10);
 myArray[i][8]=Math.floor(Math.random()*10);
 }
 myArray.sort(
   function(x, y) {
    if(x[4]!=y[4]){
      return x[4]-y[4];
    } else if(x[8]!=y[8]){
      return x[8]-y[8];
    } else if(x[6]!=y[6]){
      return x[6]-y[6];
    } else {
      return 1;
    }
  }
  );
 for(var i=0;i<myArray.length;i++ )...{
 document.write(myArray[i].join(",") + "<br/>");
 }
</script>

字符:

字符的时候sortFunction中的项目不能像数字一样直接相减,需要调用str1.localeCompare( str2 )方法来作比较,从而满足返回值。以下是多维数组的第1,2列作排序的情况。

function sortFunction(array) {
 return array.sort( function(x, y) ...{
 return (x[0]==y[0])?(x[1].localeCompare(y[1])):(x[0].localeCompare(y[0]))
 });
}

因此arrayObject.sort( sortFunction )的排序功能还是很强大的,终于能够实现了SQL语句中的ORDER BY 一样的功能。

希望本文所述对大家JavaScript程序设计有所帮助。

Javascript 相关文章推荐
JQuery 图片延迟加载并等比缩放插件
Nov 09 Javascript
Jquery ajax不能解析json对象,报Invalid JSON错误的原因和解决方法
Mar 27 Javascript
ajax与302响应代码测试
Oct 23 Javascript
js如何设置在iframe框架中指定div不显示
Dec 04 Javascript
基于jquery实现等比缩放图片
Dec 03 Javascript
jQuery实现仿腾讯迷你首页选项卡效果代码
Sep 17 Javascript
6种javascript显示当前系统时间代码
Dec 01 Javascript
JavaScript常用基础知识强化学习
Dec 09 Javascript
前端实现文件的断点续传(前端文件提交+后端PHP文件接收)
Nov 04 Javascript
深入理解ES6的迭代器与生成器
Aug 19 Javascript
jQuery实现获取及设置CSS样式操作详解
Sep 05 jQuery
elementUi vue el-radio 监听选中变化的实例代码
Jun 28 Javascript
Javascript刷新窗口方法小结
Oct 21 #Javascript
JavaScript简单遍历DOM对象所有属性的实现方法
Oct 21 #Javascript
详解JavaScript操作HTML DOM的基本方式
Oct 21 #Javascript
JavaScript函数的调用以及参数传递
Oct 21 #Javascript
Java中Timer的用法详解
Oct 21 #Javascript
JS实现的竖向折叠菜单代码
Oct 21 #Javascript
JS基于Mootools实现的个性菜单效果代码
Oct 21 #Javascript
You might like
珊瑚虫IP库浅析
2007/02/15 PHP
php 获取本机外网/公网IP的代码
2010/05/09 PHP
第四章 php数学运算
2011/12/30 PHP
UCenter 批量添加用户的php代码
2012/07/17 PHP
PHP登录(ajax提交数据和后台校验)实例分享
2016/12/29 PHP
PHP实现mysqli批量执行多条语句的方法示例
2017/07/22 PHP
PHP实现更改hosts文件的方法示例
2017/08/08 PHP
javascript字母大小写转换的4个函数详解
2014/05/09 Javascript
简单谈谈Javascript中类型的判断
2015/10/19 Javascript
javascript实现下拉提示选择框
2015/12/29 Javascript
Vue.js动态组件解析
2016/09/09 Javascript
jQuery实现的超链接提示效果示例【附demo源码下载】
2016/09/09 Javascript
js实现拖拽功能
2017/03/01 Javascript
jquery实现图片上传前本地预览
2017/04/28 jQuery
微信小程序开发中的疑问解答汇总
2017/07/03 Javascript
微信小程序 配置顶部导航条标题颜色的实现方法
2017/09/20 Javascript
微信小程序实现动态设置placeholder提示文字及按钮选中/取消状态的方法
2017/12/14 Javascript
vue 通过下拉框组件学习vue中的父子通讯
2017/12/19 Javascript
关于Vue Router中路由守卫的应用及在全局导航守卫中检查元字段的方法
2018/12/09 Javascript
微信小程序本地存储实现每日签到、连续签到功能
2019/10/09 Javascript
Vue 数组和对象更新,但是页面没有刷新的解决方式
2019/11/09 Javascript
[00:56]2014DOTA2国际邀请赛 DK、iG 赛前探访
2014/07/10 DOTA
[59:30]完美世界DOTA2联赛PWL S3 access vs LBZS 第二场 12.20
2020/12/23 DOTA
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
中外合拍动画首获奥斯卡提名,“上海出品”《飞奔去月球》能否拿下最终大奖?
2021/03/16 国漫
全球最大的跑步用品商店:Road Runner Sports
2016/09/11 全球购物
世界上最大的乐器零售商:Guitar Center
2017/11/07 全球购物
MADE法国:提供原创设计师家具
2018/09/18 全球购物
酒店总经理工作职责
2013/12/13 职场文书
保护环境倡议书100字
2014/05/19 职场文书
计划生育标语
2014/06/23 职场文书
2014年个人总结范文
2015/03/09 职场文书
书法社团活动总结
2015/05/07 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
体育委员竞选稿
2015/11/21 职场文书
索尼ICF-5900W收音机测评
2022/04/24 无线电