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 相关文章推荐
IE8 原生JSON支持
Apr 13 Javascript
映彩衣的js随笔(js图片切换效果)
Jul 31 Javascript
JavaScript入门之事件、cookie、定时等
Oct 21 Javascript
js 判断上传文件大小及格式代码
Nov 13 Javascript
JavaScript编程中布尔对象的基本使用
Oct 25 Javascript
微信小程序 wxapp地图 map详解
Oct 31 Javascript
js 博客内容进度插件详解
Feb 19 Javascript
纯JS实现只能输入数字的简单代码
Jun 21 Javascript
vue-resource请求实现http登录拦截或者路由拦截的方法
Jul 11 Javascript
微信小程序之自定义组件的实现代码(附源码)
Aug 02 Javascript
VUE子组件向父组件传值详解(含传多值及添加额外参数场景)
Sep 01 Javascript
MutationObserver在页面水印实现起到的作用详解
Jul 07 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常用函数小技巧
2008/09/11 PHP
php 网页游戏开发入门教程一(webgame+design)
2009/10/26 PHP
php读取mysql乱码,用set names XXX解决的原理分享
2011/12/29 PHP
phpize的深入理解
2013/06/03 PHP
php使用simplexml_load_file加载XML文件并显示XML的方法
2015/03/19 PHP
了解PHP的返回引用和局部静态变量
2015/06/04 PHP
CentOS下PHP7的编译安装及MySQL的支持和一些常见问题的解决办法
2015/12/17 PHP
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
jQuery中 noConflict() 方法使用
2013/04/25 Javascript
javascript轻松实现当鼠标移开时已弹出子菜单自动消失
2013/12/29 Javascript
完美实现仿QQ空间评论回复特效
2015/05/06 Javascript
js表格排序实例分析(支持int,float,date,string四种数据类型)
2015/05/06 Javascript
vue中渐进过渡效果实现
2016/10/27 Javascript
EasyUI学习之Combobox下拉列表(1)
2016/12/29 Javascript
JS简单实现自定义右键菜单实例
2017/05/31 Javascript
详解从0开始搭建微信小程序(前后端)的全过程
2019/04/15 Javascript
tornado捕获和处理404错误的方法
2014/02/26 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
python3.4 将16进制转成字符串的实例
2019/06/12 Python
浅谈对python中if、elif、else的误解
2020/08/20 Python
图解Python中深浅copy(通俗易懂)
2020/09/03 Python
Selenium环境变量配置(火狐浏览器)及验证实现
2020/12/07 Python
如何用python写个模板引擎
2021/01/14 Python
详解canvas drawImage()方法绘制图片不显示的问题
2018/10/08 HTML / CSS
全球领先美式家具品牌:Ashley爱室丽家居
2017/08/07 全球购物
超市实习总结自我鉴定
2013/09/19 职场文书
行政经理的岗位职责
2013/11/23 职场文书
本科生职业生涯规划书范文
2014/01/21 职场文书
心理学专业大学生职业生涯规划范文
2014/02/19 职场文书
总经理助理的职责
2014/03/14 职场文书
药剂专业求职信
2014/06/20 职场文书
唐山大地震观后感
2015/06/05 职场文书
酒店开业主持词
2015/07/02 职场文书
Python中常见的反爬机制及其破解方法总结
2021/06/10 Python
javascript代码简写的几种常用方式汇总
2021/08/23 Javascript
MySQL8.0升级的踩坑历险记
2021/11/01 MySQL