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 相关文章推荐
Ajax同步与异步传输的示例代码
Nov 21 Javascript
关闭时刷新父窗口两种方法
May 07 Javascript
文字垂直滚动之javascript代码
Jul 29 Javascript
基于JS实现的笛卡尔乘积之商品发布
May 13 Javascript
基于JavaScript FileReader上传图片显示本地链接
May 27 Javascript
JS 在数组指定位置插入/删除数据的方法
Jan 12 Javascript
DOM事件探秘篇
Feb 15 Javascript
js实现Tab选项卡切换效果
Jul 17 Javascript
用npm安装vue和vue-cli,并使用webpack创建项目的方法
Sep 28 Javascript
100行代码实现一个vue分页组功能
Nov 06 Javascript
Angular PWA使用的Demo示例
Jan 31 Javascript
JavaScript实现打砖块游戏
Feb 25 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
QueryPath PHP 中的jQuery
2010/04/11 PHP
PHP开发负载均衡指南
2010/07/17 PHP
介绍一些PHP判断变量的函数
2012/04/24 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
Youku 视频绝对地址获取的方法详解
2013/06/26 PHP
PHP explode()函数用法讲解
2019/02/15 PHP
收藏Javascript中常用的55个经典技巧
2007/08/12 Javascript
页面中body onload 和 window.onload 冲突的问题的解决
2009/07/01 Javascript
jquery+json实现的搜索加分页效果
2010/03/31 Javascript
Javascript 实用小技巧
2010/04/07 Javascript
使用jQuery.Validate进行客户端验证(初级篇) 不使用微软验证控件的理由
2010/06/28 Javascript
JQuery插件Quicksand实现超炫的动画洗牌效果
2015/05/03 Javascript
javascript检查浏览器是否已经启用XX功能
2015/07/10 Javascript
jQuery配合coin-slider插件制作幻灯片效果的流程解析
2016/05/13 Javascript
微信小程序组件 contact-button(客服会话按钮)详解及实例代码
2017/01/10 Javascript
angularjs定时任务的设置与清除示例
2017/06/02 Javascript
Node.js中你不可不精的Stream(流)
2018/06/08 Javascript
jQuery实现参数自定义的文字跑马灯效果
2018/08/15 jQuery
vue两组件间值传递 $router.push实现方法
2019/05/15 Javascript
vue router 跳转时打开新页面的示例方法
2019/07/28 Javascript
JavaScript隐式类型转换代码实例
2020/05/29 Javascript
[01:20]DOTA2 2017国际邀请赛冠军之路无止竞
2017/06/19 DOTA
python之文件读取一行一行的方法
2018/07/12 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
flask框架jinja2模板与模板继承实例分析
2019/08/01 Python
通过canvas转换颜色为RGBA格式及性能问题的解决
2019/11/22 HTML / CSS
Chicco婴儿用品美国官网:汽车座椅、婴儿推车、高脚椅等
2018/11/05 全球购物
小学生获奖感言范文
2014/02/02 职场文书
美国探亲签证邀请信
2014/02/05 职场文书
网页美工求职信
2014/02/15 职场文书
道路交通安全实施方案
2014/03/12 职场文书
大四优秀党员个人民主评议
2014/09/19 职场文书
公司委托书格式范文
2014/10/09 职场文书
2015年幼儿园保育员工作总结
2015/04/23 职场文书
2015年学校远程教育工作总结
2015/07/20 职场文书
李白经典诗之一:全文无一“月”字,却句句有月
2019/07/12 职场文书