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 相关文章推荐
jquery方法+js一般方法+js面向对象方法实现拖拽效果
Aug 30 Javascript
js处理表格对table进行修饰
May 26 Javascript
Jquery中$.post和$.ajax的用法小结
Apr 28 Javascript
JS实现的简单鼠标跟随DiV层效果完整实例
Oct 31 Javascript
使用堆实现Top K算法(JS实现)
Dec 25 Javascript
jQuery Mobile漏洞会有跨站脚本攻击风险
Feb 12 Javascript
Node.JS利用PhantomJs抓取网页入门教程
May 19 Javascript
jQuery响应滚动条事件功能示例
Oct 14 jQuery
vue之父子组件间通信实例讲解(props、$ref、$emit)
May 22 Javascript
vue实现todolist基本功能以及数据存储功能实例详解
Apr 11 Javascript
详解小程序云开发攻略(解决最棘手的问题)
Sep 30 Javascript
js实现购物车商品数量加减
Sep 21 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
关于PHP中Object对象的笔记分享
2011/06/28 PHP
提示Trying to clone an uncloneable object of class Imagic的解决
2011/10/27 PHP
php使用函数pathinfo()、parse_url()和basename()解析URL
2016/11/25 PHP
JS创建优美的页面滑动块效果 - Glider.js
2007/09/27 Javascript
jQuery实现冻结表头的方法
2015/03/09 Javascript
Bootstrap每天必学之弹出框(Popover)插件
2016/04/25 Javascript
JS模拟bootstrap下拉菜单效果实例
2016/06/17 Javascript
jq实现左滑显示删除按钮,点击删除实现删除数据功能(推荐)
2016/08/23 Javascript
Javascript中indexOf()和lastIndexOf应用方法实例
2016/08/24 Javascript
Javascript使用function创建类的两种方法(推荐)
2016/11/19 Javascript
关于vue.js组件数据流的问题
2017/07/26 Javascript
JavaScript输入分钟、秒倒计时技巧总结(附代码)
2017/08/17 Javascript
node.js基于socket.io快速实现一个实时通讯应用
2019/04/23 Javascript
jQuery实现简单聊天室
2020/02/08 jQuery
python获取网页状态码示例
2014/03/30 Python
Python getopt模块处理命令行选项实例
2014/05/13 Python
python统计日志ip访问数的方法
2015/07/06 Python
Python实现查找匹配项作处理后再替换回去的方法
2017/06/10 Python
Python简单实现词云图代码及步骤解析
2020/06/04 Python
css3media响应式布局实例
2016/07/08 HTML / CSS
html5 标签
2009/07/16 HTML / CSS
吃透移动端 1px的具体用法
2019/12/16 HTML / CSS
自考毕业自我鉴定范文
2013/10/27 职场文书
新闻学专业个人求职信写作
2014/02/04 职场文书
物流毕业生个人的自我评价
2014/02/13 职场文书
《自选商场》教学反思
2014/02/14 职场文书
公交公司毕业生求职信
2014/02/15 职场文书
论文指导教师评语
2014/04/28 职场文书
祖国在我心中演讲稿500字
2014/05/04 职场文书
八一建军节营销活动方案
2014/08/31 职场文书
作风建设整改方案
2014/10/27 职场文书
教师个人学习总结
2015/02/11 职场文书
珍惜时间的诗歌赏析
2019/08/23 职场文书
中秋节英文祝福语句(14句)
2019/09/11 职场文书
springboot 多数据源配置不生效遇到的坑及解决
2021/11/17 Java/Android
MySQL Server层四个日志的实现
2022/03/31 MySQL