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 10 Javascript
基于jQuery的图片大小自动适应实现代码
Nov 17 Javascript
GRID拖拽行的实例代码
Jul 18 Javascript
javascript实现复制与粘贴操作实例
Oct 16 Javascript
node.js中RPC(远程过程调用)的实现原理介绍
Dec 05 Javascript
js实现防止被iframe的方法
Jul 03 Javascript
vue.js通过自定义指令实现数据拉取更新的实现方法
Oct 18 Javascript
canvas的神奇用法
Feb 03 Javascript
微信小程序swiper组件用法实例分析【附源码下载】
Dec 07 Javascript
Angular实现较为复杂的表格过滤,删除功能示例
Dec 23 Javascript
微信小程序实现下拉框功能
Jul 16 Javascript
原生JavaScript实现拖动校验功能
Sep 29 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
2020年4月放送决定!第2期TV动画《邪神酱飞踢》视觉图&主题曲情报公开!
2020/03/06 日漫
PHP 编程请选择正确的文本编辑软件
2006/12/21 PHP
php FPDF类库应用实现代码
2009/03/20 PHP
php print EOF实现方法
2009/05/21 PHP
PHP的JSON封装、转变及输出操作示例
2019/09/27 PHP
Nigma vs AM BO3 第二场2.13
2021/03/10 DOTA
javascript页面加载完执行事件代码
2014/02/11 Javascript
解决自定义$(id)的方法与jquery选择器$冲突的问题
2014/06/14 Javascript
nodejs 整合kindEditor实现图片上传
2015/02/03 NodeJs
angular2+nodejs实现图片上传功能
2017/03/27 NodeJs
bootstrap时间插件daterangepicker使用详解
2017/10/19 Javascript
Vue.js 2.5新特性介绍(推荐)
2017/10/24 Javascript
Angular实现双向折叠列表组件的示例代码
2017/11/21 Javascript
JS中this的指向以及call、apply的作用
2018/05/06 Javascript
原生JS实现的碰撞检测功能示例
2018/05/18 Javascript
[27:53]2014 DOTA2华西杯精英邀请赛 5 24 NewBee VS iG
2014/05/26 DOTA
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
python映射列表实例分析
2015/01/26 Python
python使用wmi模块获取windows下硬盘信息的方法
2015/05/15 Python
Python保存MongoDB上的文件到本地的方法
2016/03/16 Python
TensorFlow用expand_dim()来增加维度的方法
2018/07/26 Python
Python图像处理PIL各模块详细介绍(推荐)
2019/07/17 Python
python 定时器每天就执行一次的实现代码
2019/08/14 Python
python自动化UI工具发送QQ消息的实例
2019/08/27 Python
python实现Oracle查询分组的方法示例
2020/04/30 Python
Django models文件模型变更错误解决
2020/05/11 Python
就业推荐自我鉴定
2013/10/06 职场文书
工作岗位说明书模板
2014/05/09 职场文书
争先创优活动总结
2014/08/27 职场文书
幼儿园个人师德总结
2015/02/06 职场文书
史上最牛的辞职信
2015/02/28 职场文书
2015年业务员工作总结范文
2015/04/07 职场文书
你真的了解PHP中的引用符号(&)吗
2021/05/12 PHP
python实现简单的井字棋
2021/05/26 Python
Nginx缓存设置案例详解
2021/09/15 Servers
yolov5返回坐标的方法实例
2022/03/17 Python