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 相关文章推荐
JavaScript 字符串乘法
Aug 20 Javascript
Mootools 1.2教程(21)——类(二)
Sep 15 Javascript
浅析javascript闭包 实例分析
Dec 25 Javascript
让ie6也支持websocket采用flash封装实现
Feb 18 Javascript
使用js实现雪花飘落效果
Aug 26 Javascript
JS常用表单验证方法总结
May 22 Javascript
利用transition实现文字上下抖动的效果
Jan 21 Javascript
JS实现根据密码长度显示安全条功能
Mar 08 Javascript
jQuery实现的页面详情展开收起功能示例
Jun 11 jQuery
如何使用vuex实现兄弟组件通信
Nov 02 Javascript
node.js使用stream模块实现自定义流示例
Feb 13 Javascript
vue打开子组件弹窗都刷新功能的实现
Sep 21 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
深入Nginx + PHP 缓存详解
2013/07/11 PHP
浅析ThinkPHP缓存之快速缓存(F方法)和动态缓存(S方法)(日常整理)
2015/10/26 PHP
基于thinkPHP类的插入数据库操作功能示例
2017/01/06 PHP
php操作redis数据库常见方法实例总结
2020/02/20 PHP
JavaScript 数组的 uniq 方法
2008/01/23 Javascript
JQuery 确定css方框模型(盒模型Box Model)
2010/01/22 Javascript
jQuery源码分析-05异步队列 Deferred 使用介绍
2011/11/14 Javascript
javascript采用数组实现tab菜单切换效果
2012/12/12 Javascript
JS 作用域与作用域链详解
2015/04/07 Javascript
JavaScript手机振动API
2016/06/11 Javascript
vue双向数据绑定原理探究(附demo)
2017/01/17 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
d3.js中冷门却实用的内置函数总结
2017/02/04 Javascript
IntelliJ IDEA 安装vue开发插件的方法
2017/11/21 Javascript
Vue2.x通用编辑组件的封装及应用详解
2019/05/28 Javascript
继承行为在 ES5 与 ES6 中的区别详解
2019/12/24 Javascript
node.js express捕获全局异常的三种方法实例分析
2019/12/27 Javascript
Vue实现input宽度随文字长度自适应操作
2020/07/29 Javascript
[47:55]Ti4第二日主赛事败者组 NaVi vs EG 1
2014/07/20 DOTA
Python2实现的LED大数字显示效果示例
2017/09/04 Python
python利用pandas将excel文件转换为txt文件的方法
2018/10/23 Python
python matplotlib 画dataframe的时间序列图实例
2019/11/20 Python
python argparse模块通过后台传递参数实例
2020/04/20 Python
Python Mock模块原理及使用方法详解
2020/07/07 Python
NIHAOMARKET官方海外旗舰店:意大利你好华人超市
2018/01/27 全球购物
Java如何获得ResultSet的总行数
2016/09/03 面试题
行政助理的岗位职责
2014/02/18 职场文书
大学生个人求职信例文
2014/07/07 职场文书
英语三分钟演讲稿
2014/08/19 职场文书
人大代表选举标语
2014/10/07 职场文书
2014年餐厅服务员工作总结
2014/11/18 职场文书
护理工作个人总结
2015/03/03 职场文书
2016大学生国家助学贷款承诺书
2016/03/25 职场文书
写作技巧:如何撰写一份优秀的营销策划书
2019/08/13 职场文书
2019年共青团工作条例最新版
2019/11/12 职场文书
使用numpy nonzero 找出非0元素
2021/05/14 Python