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 相关文章推荐
兼容FireFox 的 js 日历 支持时间的获取
Mar 04 Javascript
基于jquery的修改当前TAB显示标题的代码
Dec 11 Javascript
javascript权威指南 学习笔记之null和undefined
Sep 25 Javascript
js控制的回到页面顶端goTop的代码实现
Mar 20 Javascript
Javascript遍历Html Table示例(包括内容和属性值)
Jul 08 Javascript
javascript函数命名的三种方式及区别介绍
Mar 22 Javascript
canvas实现图像截取功能
Feb 06 Javascript
基于vue的短信验证码倒计时demo
Sep 13 Javascript
浅析java线程中断的办法
Jul 29 Javascript
自定义Vue中的v-module双向绑定的实现
Apr 17 Javascript
Layui 带多选框表格监听事件以及按钮自动点击写法实例
Sep 02 Javascript
解决axios post 后端无法接收数据的问题
Oct 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
关于ob_get_contents(),ob_end_clean(),ob_start(),的具体用法详解
2013/06/24 PHP
两款万能的php分页类
2015/11/12 PHP
详解PHP的Yii框架中日志的相关配置及使用
2015/12/08 PHP
javascript实现的鼠标链接提示效果生成器代码
2007/06/28 Javascript
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
基于jquery实现的省市区级联无ajax
2013/09/24 Javascript
jquery获取颜色在ie和ff下的区别示例介绍
2014/03/28 Javascript
javascript控制在光标位置插入文字适合表情的插入
2014/06/09 Javascript
jQuery回调函数的定义及用法实例
2014/12/23 Javascript
node.js下LDAP查询实例分享
2015/09/30 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
JavaScript通过HTML的class来获取HTML元素的方法总结
2016/05/24 Javascript
深入理解JS正则表达式---分组
2016/07/18 Javascript
javascript与jquery动态创建html元素示例
2016/07/25 Javascript
深入理解JS实现快速排序和去重
2016/10/17 Javascript
javascript 实现文本使用省略号替代(超出固定高度的情况)
2017/02/21 Javascript
微信小程序之电影影评小程序制作代码
2017/08/03 Javascript
使用react实现手机号的数据同步显示功能的示例代码
2018/04/03 Javascript
vue2.0 element-ui中el-select选择器无法显示选中的内容(解决方法)
2018/08/24 Javascript
js实现json数组分组合并操作示例
2019/02/12 Javascript
vue实现弹幕功能
2019/10/25 Javascript
Python使用PDFMiner解析PDF代码实例
2017/03/27 Python
详解python函数传参是传值还是传引用
2018/01/16 Python
python3.x上post发送json数据
2018/03/04 Python
python计算阶乘和的方法(1!+2!+3!+...+n!)
2019/02/01 Python
django迁移数据库错误问题解决
2019/07/29 Python
python psutil模块使用方法解析
2019/08/01 Python
python实现按首字母分类查找功能
2019/10/31 Python
jupyter notebook 写代码自动补全的实现
2020/11/02 Python
递归实现回文判断(如:abcdedbca就是回文,判断一个面试者对递归理解的简单程序)
2013/04/28 面试题
TCP/IP模型的分界线
2012/12/01 面试题
国际贸易个人求职信范文
2014/01/04 职场文书
大学生志愿者感言
2014/01/15 职场文书
人力资源经理的岗位职责范本
2014/02/28 职场文书
导游词之无锡唐城
2019/12/12 职场文书
浅谈GO中的Channel以及死锁的造成
2022/03/18 Golang