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 相关文章推荐
ExtJS判断IE浏览器类型的方法
Feb 10 Javascript
javascript中apply和call方法的作用及区别说明
Feb 14 Javascript
JS常用字符串处理方法应用总结
May 22 Javascript
JavaScript匿名函数与委托使用示例
Jul 22 Javascript
jquery 操作css样式、位置、尺寸方法汇总
Nov 28 Javascript
jQuery中unwrap()方法用法实例
Jan 16 Javascript
浅谈JavaScript 覆盖原型以及更改原型
Aug 31 Javascript
新手学习前端之js模仿淘宝主页网站
Oct 31 Javascript
Angular4 中内置指令的基本用法
Jul 31 Javascript
React 组件间的通信示例
Jun 14 Javascript
vue键盘事件点击事件加native操作
Jul 27 Javascript
Vue3不支持Filters过滤器的问题
Sep 24 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
curl实现站外采集的方法和技巧
2014/01/31 PHP
PHP常用数组函数介绍
2014/07/28 PHP
php微信公众号开发之校园图书馆
2018/10/20 PHP
ExtJS 2.0实用简明教程 之Ext类库简介
2009/04/29 Javascript
Javascript类库的顶层对象名用户体验分析
2010/10/24 Javascript
js特殊字符转义介绍
2013/11/05 Javascript
javascript删除字符串最后一个字符
2014/01/14 Javascript
fixedBox固定div漂浮代码支持ie6以上大部分主流浏览器
2014/06/26 Javascript
JavaScript实现页面5秒后自动跳转的方法
2015/04/16 Javascript
使用RequireJS库加载JavaScript模块的实例教程
2016/06/06 Javascript
轮播的简单实现方法
2016/07/28 Javascript
原生js实现水平方向无缝滚动
2017/01/10 Javascript
js轮播图透明度切换(带上下页和底部圆点切换)
2017/04/27 Javascript
详解webpack+vue-cli项目打包技巧
2017/06/17 Javascript
nodejs 使用http进行post或get请求的实例(携带cookie)
2019/01/03 NodeJs
Vue.js样式动态绑定实现小结
2019/01/24 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
Vue.js数字输入框组件使用方法详解
2019/10/19 Javascript
python kmeans聚类简单介绍和实现代码
2018/02/23 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
为何人工智能(AI)首选Python?读完这篇文章你就知道了(推荐)
2019/04/06 Python
在django项目中导出数据到excel文件并实现下载的功能
2020/03/13 Python
判断Threading.start新线程是否执行完毕的实例
2020/05/02 Python
香港家用健身器材、运动器材及健康美容仪器专门店:FitBoxx
2019/12/05 全球购物
资生堂英国官网:Shiseido英国
2020/12/30 全球购物
js实现弹框效果
2021/03/24 Javascript
小学生检讨书大全
2014/02/06 职场文书
共筑中国梦演讲稿
2014/04/23 职场文书
服务标语口号
2014/07/01 职场文书
考试作弊检讨书
2014/10/21 职场文书
小班教师个人总结
2015/02/05 职场文书
2015年端午节活动总结
2015/02/11 职场文书
个人思想政治总结
2015/03/05 职场文书
html+css合并表格边框的示例代码
2021/03/31 HTML / CSS