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在光标位置插入内容的实现代码
Jun 18 Javascript
JavaScript高级程序设计 客户端存储学习笔记
Sep 10 Javascript
Highcharts 非常实用的Javascript统计图demo示例
Jul 03 Javascript
当鼠标移动时出现特效的JQuery代码
Nov 08 Javascript
聊一聊JavaScript作用域和作用域链
May 03 Javascript
浅析ES6的八进制与二进制整数字面量
Aug 30 Javascript
jquery动态创建div与input的实例代码
Oct 12 Javascript
BootStrap 可编辑表Table格
Nov 24 Javascript
ES6新特性之模块Module用法详解
Apr 01 Javascript
bootstrap-table+treegrid实现树形表格
Jul 26 Javascript
layui 数据表格+分页+搜索+checkbox+缓存选中项数据的方法
Sep 21 Javascript
JavaScript实现滑块验证解锁
Jan 07 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
让php处理图片变得简单 基于gb库的图片处理类附实例代码下载
2011/05/17 PHP
js和php邮箱地址验证的实现方法
2014/01/09 PHP
php实现格式化多行文本为Js可用格式
2015/04/15 PHP
php强大的时间转换函数strtotime
2016/02/18 PHP
php中二分法查找算法实例分析
2016/09/22 PHP
PHP7.1实现的AES与RSA加密操作示例
2018/06/15 PHP
JavaScript var声明变量背后的原理示例解析
2013/10/12 Javascript
JavaScript的作用域和块级作用域概念理解
2014/09/21 Javascript
DOM操作一些常用的属性汇总
2015/03/13 Javascript
JavaScript隐式类型转换
2016/03/15 Javascript
zTree实现节点修改的实时刷新功能
2017/03/20 Javascript
Vue0.1的过滤代码如何添加到Vue2.0直接使用
2017/08/23 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
jquery radio 动态控制选中失效问题的解决方法
2018/02/28 jQuery
vue watch关于对象内的属性监听
2019/04/22 Javascript
react MPA 多页配置详解
2019/10/18 Javascript
Vue前端项目部署IIS的实现
2020/01/06 Javascript
从0搭建vue-cli4脚手架
2020/06/17 Javascript
Windows下安装python2和python3多版本教程
2017/03/30 Python
浅谈python日志的配置文件路径问题
2018/04/28 Python
Python爬虫之pandas基本安装与使用方法示例
2018/08/08 Python
一文轻松掌握python语言命名规范规则
2020/06/18 Python
Python基于pillow库实现生成图片水印
2020/09/14 Python
有模特经验的简历自我评价
2013/09/19 职场文书
控制工程专业个人求职信
2013/09/25 职场文书
财务会计专业毕业生自荐信
2013/10/19 职场文书
社会实践心得体会
2014/01/03 职场文书
六查六看剖析材料
2014/02/15 职场文书
小学优秀班主任事迹材料
2014/05/17 职场文书
医药销售自荐书
2014/05/29 职场文书
质量管理标语
2014/06/12 职场文书
离职证明范本(5篇)
2014/09/19 职场文书
大学生自我推荐信范文
2015/03/24 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
寻衅滋事罪辩护词
2015/05/21 职场文书
Java Redisson多策略注解限流
2022/09/23 Java/Android