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 相关文章推荐
强悍无比的WEB开发好助手FireBug(Firefox Plugin)
Jan 16 Javascript
jQuery使用手册之三 CSS操作
Mar 24 Javascript
Javascript事件热键兼容ie|firefox
Dec 30 Javascript
JS小功能(checkbox实现全选和全取消)实例代码
Nov 28 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
Jun 25 Javascript
jQuery基于ajax()使用serialize()提交form数据的方法
Dec 08 Javascript
DOM中事件处理概览与原理的全面解析
Aug 16 Javascript
Angular-Touch库用法示例
Dec 22 Javascript
JavaScript实现大图轮播效果
Jan 11 Javascript
详解JS中遍历语法的比较
Apr 07 Javascript
解决vue初始化项目时,一直卡在Project description上的问题
Oct 31 Javascript
JS实现可以用键盘方向键控制的动画
Dec 11 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
ftp类(myftp.php)
2006/10/09 PHP
PHP递归删除多维数组中的某个值
2017/04/17 PHP
php使用scandir()函数扫描指定目录下所有文件示例
2019/06/08 PHP
jquery.Jwin.js 基于jquery的弹出层插件代码
2012/05/23 Javascript
firefox下jQuery UI Autocomplete 1.8.*中文输入修正方法
2012/09/19 Javascript
js中top/parent/frame概述及案例应用
2013/02/06 Javascript
JS解决ie6下png透明的方法实例
2013/08/02 Javascript
js中数组排序sort方法的原理分析
2014/11/20 Javascript
node.js中的fs.readlink方法使用说明
2014/12/17 Javascript
js一维数组、多维数组和对象的混合使用方法
2016/04/03 Javascript
canvas学习之API整理笔记(二)
2016/12/29 Javascript
JavaScript中set与get方法用法示例
2018/08/15 Javascript
解决Vue中引入swiper,在数据渲染的时候,发生不滑动的问题
2018/09/27 Javascript
详细教你微信公众号正文页SVG交互开发技巧
2019/07/25 Javascript
js实现带搜索功能的下拉框
2020/01/11 Javascript
[01:28:43]2014 DOTA2华西杯精英邀请赛5 24 DK VS CIS
2014/05/25 DOTA
Python多线程学习资料
2012/12/19 Python
python读文件保存到字典,修改字典并写入新文件的实例
2018/04/23 Python
Python常用字符串替换函数strip、replace及sub用法示例
2018/05/21 Python
Python自动化运维之Ansible定义主机与组规则操作详解
2019/06/13 Python
python交互模式下输入换行/输入多行命令的方法
2019/07/02 Python
python 实现aes256加密
2020/11/27 Python
美津浓美国官网:Mizuno美国
2018/08/07 全球购物
最好的意大利皮夹克:D’Arienzo
2018/12/04 全球购物
暑假实习求职信范文
2013/09/22 职场文书
中专生自荐信
2013/10/12 职场文书
韩国商务邀请函
2014/01/14 职场文书
出国英文推荐信
2014/05/10 职场文书
高考标语大全
2014/06/05 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
校长师德师风自我剖析材料
2014/09/29 职场文书
2015年文明创建工作总结
2015/04/30 职场文书
Django如何与Ajax交互
2021/04/29 Python
Navicat连接MySQL错误描述分析
2021/06/02 MySQL
python中的getter与setter你了解吗
2022/03/24 Python
Python 第三方库 openpyxl 的安装过程
2022/12/24 Python