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 01 Javascript
jQuery EasyUI API 中文文档 - ProgressBar 进度条
Sep 29 Javascript
javascript之Partial Application学习
Jan 10 Javascript
谈谈JavaScript中的函数与闭包
Apr 14 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
Oct 23 Javascript
学习javascript面向对象 掌握创建对象的9种方式
Jan 04 Javascript
AngularJS中的Directive自定义一个表格
Jan 25 Javascript
基于javascript实现九九乘法表
Mar 27 Javascript
利用jQuery实现一个简单的表格上下翻页效果
Mar 14 Javascript
vue+vuex+axios实现登录、注册页权限拦截
Mar 09 Javascript
vue axios登录请求拦截器
Apr 02 Javascript
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
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
Could not load type System.ServiceModel.Activation.HttpModule解决办法
2012/12/29 PHP
微信公众平台开发之配置与请求
2015/08/26 PHP
PHP 中TP5 Request 请求对象的实例详解
2017/07/31 PHP
用表格输出1-1000之间的数字实现代码(附特效)
2013/04/21 Javascript
jquery foreach使用示例
2013/09/12 Javascript
利用进制转换压缩数字函数分享
2014/01/02 Javascript
jquery实现弹出层效果实例
2015/05/19 Javascript
判断JS对象是否拥有某属性的方法推荐
2016/05/12 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
2016/09/23 Javascript
Bootstrap面板(Panels)的简单实现代码
2017/03/17 Javascript
JavaScript实现的选择排序算法实例分析
2017/04/14 Javascript
JavaScript 中调用 Kotlin 方法实例详解
2017/06/09 Javascript
JavaScript输入框字数实时统计更新
2017/06/17 Javascript
微信小程序开发之animation循环动画实现的让云朵飘效果
2017/07/14 Javascript
React-router v4 路由配置方法小结
2017/08/08 Javascript
原生js实现简单的模态框示例
2017/09/08 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
使用Webpack提升Vue.js应用程序的4种方法(翻译)
2019/10/09 Javascript
JS删除对象中某一属性案例详解
2020/09/08 Javascript
vue移动端下拉刷新和上滑加载
2020/10/27 Javascript
在Python中将函数作为另一个函数的参数传入并调用的方法
2019/01/22 Python
在Python中实现函数重载的示例代码
2019/12/12 Python
基于python3.7利用Motor来异步读写Mongodb提高效率(推荐)
2020/04/29 Python
python如何操作mysql
2020/08/17 Python
安装pyinstaller遇到的各种问题(小结)
2020/11/20 Python
使用phonegap操作数据库的实现方法
2017/03/31 HTML / CSS
美国办公用品购物网站:Quill.com
2016/09/01 全球购物
英国领先的高街书籍专家:Waterstones
2018/02/01 全球购物
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
德国净水壶和滤芯品牌:波尔德PearlCo(家用净水器)
2020/04/29 全球购物
门诊手术室工作制度
2014/01/30 职场文书
小学生竞选班干部演讲稿
2014/04/24 职场文书
班级团队活动方案
2014/08/14 职场文书
收银员岗位职责范本
2015/04/07 职场文书
python绘制箱型图
2021/04/27 Python
无线电通信名词解释
2022/02/18 无线电