javascript 数组排序函数


Posted in Javascript onAugust 20, 2009

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]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
myArray[i]=Math.floor(Math.random()*10); 
} 
myArray.sort( function(x, y) ...{ 
return (x[0]==y[0])?((x==y)?(x-y):(x-y)):(x-y) 
}); 
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.localeCompare(y)):(x[0].localeCompare(y[0])) 
}); 
}

因此arrayObject.sort( sortFunction )的排序功能还是很强大的,终于能够实现了SQL语句中的ORDER BY 一样的功能。
Javascript 相关文章推荐
javascript 表单规则集合对象
Jul 21 Javascript
javascript new一个对象的实质
Jan 07 Javascript
toString()一个会自动调用的方法
Feb 08 Javascript
javascript修改表格背景色实例代码分享
Dec 10 Javascript
绑定回车enter事件代码
May 18 Javascript
按钮接受回车事件的三种实现方法
Jun 06 Javascript
JavaScript中的Math.atan2()方法使用详解
Jun 15 Javascript
JS动态的把左边列表添加到右边的实现代码(可上下移动)
Nov 17 Javascript
Bootstrap笔记之缩略图、警告框实例详解
Mar 09 Javascript
vue实现消息的无缝滚动效果的示例代码
Dec 05 Javascript
JavaScript代码简化技巧实例解析
Sep 09 Javascript
vue-cli3 热更新配置操作
Sep 18 Javascript
用Javascript数组处理多个字符串的连接问题
Aug 20 #Javascript
JQUERY 浏览器判断实现函数
Aug 20 #Javascript
google地图的路线实现代码
Aug 20 #Javascript
JavaScript 字符串乘法
Aug 20 #Javascript
javascript 短路法代码精简
Aug 20 #Javascript
斜45度寻路实现函数
Aug 20 #Javascript
javascript 多级checkbox选择效果
Aug 20 #Javascript
You might like
php5新改动之短标记启用方法
2008/09/11 PHP
通过缓存数据库结果提高PHP性能的原理介绍
2012/09/05 PHP
PHP面向对象编程之深入理解方法重载与方法覆盖(多态)
2015/12/24 PHP
CI框架数据库查询缓存优化的方法
2016/11/21 PHP
JavaScript 特殊字符
2007/04/05 Javascript
javascript 对象定义方法 简单易学
2009/03/22 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
网页中可关闭的漂浮窗口实现可自行调节
2013/08/20 Javascript
由点击页面其它地方隐藏div所想到的jQuery的delegate
2013/08/29 Javascript
轻量级javascript 框架Backbone使用指南
2015/07/24 Javascript
基于jQuery实现带动画效果超炫酷的弹出对话框(附源码下载)
2016/02/22 Javascript
超漂亮的Bootstrap 富文本编辑器summernote
2016/04/05 Javascript
Javascript中return的使用与闭包详解
2017/01/11 Javascript
js随机生成一个验证码
2017/06/01 Javascript
node跨域请求方法小结
2017/08/25 Javascript
JS基于递归实现网页版计算器的方法分析
2017/12/20 Javascript
详解webpack+ES6+Sass搭建多页面应用
2018/11/05 Javascript
微信小程序实现的3d轮播图效果示例【基于swiper组件】
2018/12/11 Javascript
深入了解Vue动态组件和异步组件
2021/01/26 Vue.js
[03:03]DOTA2 2017国际邀请赛开幕战队入场仪式
2017/08/09 DOTA
python strip()函数 介绍
2013/05/24 Python
利用Python3分析sitemap.xml并抓取导出全站链接详解
2017/07/04 Python
Apache部署Django项目图文详解
2019/07/30 Python
python如何处理程序无法打开
2020/06/16 Python
详解Django中异步任务之django-celery
2020/11/05 Python
圣诞树世界:Christmas Tree World
2019/12/10 全球购物
新加坡第一大健康与美容零售商:屈臣氏新加坡(Watsons Singapore)
2020/12/11 全球购物
银行个人求职自荐信范文
2013/12/16 职场文书
法制宣传月活动方案
2014/05/11 职场文书
软件测试专业推荐信
2014/09/18 职场文书
公司合作协议范文
2014/10/01 职场文书
2014年党风建设工作总结
2014/11/19 职场文书
2016年大学生寒假社会实践心得体会
2015/10/09 职场文书
vue 实现弹窗关闭后刷新效果
2022/04/08 Vue.js
Python万能模板案例之matplotlib绘制甘特图
2022/04/13 Python
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang