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 相关文章推荐
简单JS代码压缩器
Oct 12 Javascript
javascript 应用小技巧方法汇总
Jul 05 Javascript
javascript三种代码注释方法
Jun 02 Javascript
jQuery实现的网格线绘制方法
Jun 20 Javascript
React Native基础入门之初步使用Flexbox布局
Jul 02 Javascript
angular5 子组件监听父组件传入值的变化方法
Sep 30 Javascript
浅谈Angular 观察者模式理解
Nov 01 Javascript
BootStrap table实现表格行拖拽效果
Dec 01 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 Javascript
js动态获取时间的方法分析
Aug 02 Javascript
jQuery三组基本动画与自定义动画操作实例总结
May 09 jQuery
javascript实现前端成语点击验证优化
Jun 24 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中用正则表达式清除字符串的空白
2011/01/17 PHP
PHP实现邮件群发的源码
2013/06/18 PHP
Laravel框架处理用户的请求操作详解
2019/12/20 PHP
Extjs学习笔记之三 extjs form更多的表单项
2010/01/07 Javascript
ExtJs使用IFrame的实现代码
2010/03/24 Javascript
js RuntimeObject() 获取ie里面自定义函数或者属性的集合
2010/11/23 Javascript
{}与function(){}选用空对象{}来存放keyValue
2012/05/23 Javascript
9行javascript代码获取QQ群成员具体实现
2013/10/16 Javascript
深入理解javascript中return的作用
2013/12/30 Javascript
Node.js服务器环境下使用Mock.js拦截AJAX请求的教程
2016/05/23 Javascript
HTML5 canvas 9绘制图片实例详解
2016/09/06 Javascript
JS扩展类,克隆对象与混合类实例分析
2016/11/26 Javascript
JS实现的简单图片切换功能示例【测试可用】
2017/02/14 Javascript
nodejs 终端打印进度条实例代码
2017/04/22 NodeJs
详解使用jQuery.i18n.properties实现js国际化
2018/05/04 jQuery
解决Nodejs全局安装模块后找不到命令的问题
2018/05/15 NodeJs
解决vue-cli webpack打包后加载资源的路径问题
2018/09/25 Javascript
vue实现滑动切换效果(仅在手机模式下可用)
2020/06/29 Javascript
微信小程序实现pdf、word等格式文件上传的方法
2019/09/10 Javascript
[03:43]2014DOTA2西雅图国际邀请赛 newbee战队巡礼
2014/07/07 DOTA
python正则分组的应用
2013/11/10 Python
python实现的用于搜索文件并进行内容替换的类实例
2015/06/28 Python
浅谈Pandas:Series和DataFrame间的算术元素
2018/12/22 Python
Python datetime包函数简单介绍
2019/08/28 Python
Python实现语音识别和语音合成功能
2019/09/20 Python
Python 中list ,set,dict的大规模查找效率对比详解
2019/10/11 Python
Python基于Socket实现简单聊天室
2020/02/17 Python
Pycharm及python安装详细步骤及PyCharm配置整理(推荐)
2020/07/31 Python
计算Python Numpy向量之间的欧氏距离实例
2020/05/22 Python
求职信内容怎么写
2014/05/26 职场文书
联片教研活动总结
2014/07/01 职场文书
个性与发展自我评价
2015/03/06 职场文书
2016年“5.12”护士节致辞
2015/07/31 职场文书
九年级语文教学反思
2016/03/03 职场文书
python自动计算图像数据集的RGB均值
2021/06/18 Python
Python面向对象之成员相关知识总结
2021/06/24 Python