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 相关文章推荐
?牟┛途W扣了一??效果出?? target=
May 27 Javascript
Jquery 组合form元素为json格式,asp.net反序列化
Jul 09 Javascript
jQuery 开发者应该注意的9个错误
May 03 Javascript
如何判断微信内置浏览器(通过User Agent实现)
Sep 01 Javascript
Javascript中的call()方法介绍
Mar 15 Javascript
JavaScript实现数据类型的相互转换
Mar 06 Javascript
AngularJS constant和value区别详解
Feb 28 Javascript
angularjs实现分页和搜索功能
Jan 03 Javascript
微信小程序JS加载esmap地图的实例详解
Sep 04 Javascript
layui输入框中只允许输入整数的实现方法
Sep 18 Javascript
vue实现移动端图片上传功能
Dec 23 Javascript
el-form 多层级表单的实现示例
Sep 10 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设计模式 Composite (组合模式)
2011/06/26 PHP
浅析PHP中call user func()函数及如何使用call user func调用自定义函数
2015/11/05 PHP
静态的动态续篇之来点XML
2006/08/15 Javascript
用js实现table单元格高宽调整,兼容合并单元格(兼容IE6、7、8、FF)实例
2013/06/25 Javascript
非html5实现js版弹球游戏示例代码
2013/09/22 Javascript
JavaScript简介
2015/02/15 Javascript
JavaScript移除数组内重复元素的方法
2015/03/18 Javascript
Windows系统下使用Sublime搭建nodejs环境
2015/04/13 NodeJs
Jquery动态添加输入框的方法
2015/05/29 Javascript
PHP获取当前页面完整URL的方法
2016/12/02 Javascript
javascript删除html标签函数cIsHTML
2017/01/09 Javascript
jQuery基于Ajax方式提交表单功能示例
2017/02/10 Javascript
详解AngularJS用Interceptors来统一处理HTTP请求和响应
2017/06/08 Javascript
从对象列表中获取一个对象的方法,依据关键字和值
2017/09/20 Javascript
在vue中封装可复用的组件方法
2018/03/01 Javascript
Vue.set()动态的新增与修改数据,触发视图更新的方法
2018/09/15 Javascript
jquery实现有过渡效果的tab切换
2020/07/17 jQuery
vuex管理状态仓库使用详解
2020/07/29 Javascript
python 打印出所有的对象/模块的属性(实例代码)
2016/09/11 Python
python爬虫框架talonspider简单介绍
2017/06/09 Python
Django在win10下的安装并创建工程
2017/11/20 Python
Python使用base64模块进行二进制数据编码详解
2018/01/11 Python
python实现音乐下载器
2018/04/15 Python
python 用for循环实现1~n求和的实例
2019/02/01 Python
Python:合并两个numpy矩阵的实现
2019/12/02 Python
在 Pycharm 安装使用black的方法详解
2020/04/02 Python
tensorflow 大于某个值为1,小于为0的实例
2020/06/30 Python
美国最受欢迎的童装品牌之一:The Children’s Place
2016/07/23 全球购物
英国儿童图书网站:Scholastic
2017/03/26 全球购物
匈牙利最大的健身制造商和销售商:inSPORTline
2018/10/30 全球购物
捐助倡议书范文
2014/04/15 职场文书
华山导游词
2015/02/03 职场文书
2015年教师节慰问信
2015/03/23 职场文书
董事长新年致辞
2015/07/29 职场文书
护士岗位竞聘书
2015/09/15 职场文书
MySQL时区造成时差问题
2022/04/13 MySQL