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 相关文章推荐
解决js数据包含加号+通过ajax传到后台时出现连接错误
Aug 01 Javascript
jQuery页面加载初始化常用的三种方法
Jun 04 Javascript
JQuery实现可直接编辑的表格
Apr 16 Javascript
详解Wondows下Node.js使用MongoDB的环境配置
Mar 01 Javascript
详解jQuery的表单验证插件--Validation
Dec 21 Javascript
JS+HTML5 FileReader实现文件上传前本地预览功能
Mar 27 Javascript
JS沙箱模式实例分析
Sep 04 Javascript
微信小程序中吸底按钮适配iPhone X方案
Nov 29 Javascript
webpack4.0 入门实践教程
Oct 08 Javascript
layer父页获取弹出层输入框里面的值方法
Sep 02 Javascript
mui js控制开关状态、修改switch开关的值方法
Sep 03 Javascript
layui动态绑定事件的方法
Sep 20 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
高分R级DC动画剧《哈莉·奎茵》第二季正式预告首发
2020/04/09 欧美动漫
咖啡语言
2021/03/03 咖啡文化
解析PHP中DIRECTORY_SEPARATOR,PATH_SEPARATOR两个常量的作用
2013/06/21 PHP
PHP迭代器实现斐波纳契数列的函数
2013/11/12 PHP
smarty模板引擎之内建函数用法
2015/03/30 PHP
JS模拟的QQ面板上的多级可展开的菜单
2009/10/10 Javascript
JQuery 应用 JQuery.groupTable.js
2010/12/15 Javascript
js 分页全选或反选标识实现代码
2011/08/09 Javascript
Js 冒泡事件阻止实现代码
2013/01/27 Javascript
js操作checkbox遇到的问题解决
2013/06/29 Javascript
模拟一个类似百度google的模糊搜索下拉列表
2014/04/15 Javascript
Jquery插件分享之气泡形提示控件grumble.js
2014/05/20 Javascript
浅谈javascript 函数内部属性
2015/01/21 Javascript
浅谈轻量级js模板引擎simplite
2015/02/13 Javascript
Node.js实现JS文件合并小工具
2016/02/02 Javascript
Node.js环境下JavaScript实现单链表与双链表结构
2016/06/12 Javascript
Javascript表单特效之十大常用原理性样例代码大总结
2016/07/12 Javascript
JavaScript省市区三级联动菜单效果
2016/09/21 Javascript
js判断价格,必须为数字且不能为负数的实现方法
2016/10/07 Javascript
jQuery使用siblings获取某元素所有同辈(兄弟姐妹)元素用法示例
2017/01/30 Javascript
详解Vue2.0 事件派发与接收
2017/09/05 Javascript
vue 组件高级用法实例详解
2018/04/11 Javascript
layui使用及简单的三级联动实现教程
2020/12/01 Javascript
vue的hash值原理也是table切换实例代码
2020/12/14 Vue.js
[01:16:12]完美世界DOTA2联赛PWL S2 FTD vs Inki 第一场 11.21
2020/11/23 DOTA
Python实现针对json中某个关键字段进行排序操作示例
2018/12/25 Python
对Python捕获控制台输出流的方法详解
2019/01/07 Python
Python实现简单查找最长子串功能示例
2019/02/26 Python
python进程和线程用法知识点总结
2019/05/28 Python
Python的轻量级ORM框架peewee使用教程
2021/02/05 Python
二手房买卖协议书
2014/04/10 职场文书
三严三实对照检查材料
2014/08/25 职场文书
出纳试用期自我鉴定范文
2014/09/16 职场文书
国际贸易实训报告
2014/11/05 职场文书
2014年信访维稳工作总结
2014/12/08 职场文书
Java 超详细讲解ThreadLocal类的使用
2022/04/07 Java/Android