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中实现命名空间
Nov 23 Javascript
jquery显示和隐藏div特效实例
Feb 27 Javascript
JS/jQuery实现默认显示部分文字点击按钮显示全部内容
May 13 Javascript
jQuery标签编辑插件Tagit使用指南
Apr 21 Javascript
创建你的第一个AngularJS应用的方法
Jun 16 Javascript
bootstrap的3级菜单样式,支持母版页保留打开状态实现方法
Nov 10 Javascript
关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)
Dec 14 Javascript
详解js的事件处理函数和动态创建html标记方法
Dec 16 Javascript
使用微信内嵌H5网页解决JS倒计时失效问题
Jan 13 Javascript
JS解析url查询参数的简单代码
Aug 06 Javascript
vue.js select下拉框绑定和取值方法
Mar 03 Javascript
原生JavaScript实现购物车
Jan 10 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+Tidy-完美的XHTML纠错+过滤
2007/04/10 PHP
Cannot modify header information错误解决方法
2008/10/08 PHP
php 魔术函数使用说明
2010/02/21 PHP
高质量PHP代码的50个实用技巧必备(下)
2016/01/22 PHP
php实现图片上传并进行替换操作
2016/03/15 PHP
javascript 类方法定义还是有点区别
2009/04/15 Javascript
jQuery学习笔记之Helloworld
2010/12/22 Javascript
jQuery Easyui DataGrid点击某个单元格即进入编辑状态焦点移开后保存数据
2016/08/15 Javascript
聊聊JavaScript如何实现继承及特点
2017/04/07 Javascript
vue几个常用跨域处理方式介绍
2018/02/07 Javascript
vue地址栏直接输入路由无效问题的解决
2018/11/15 Javascript
微信小程序实现多行文字超出部分省略号显示功能
2019/10/23 Javascript
vue中在vuex的actions中请求数据实例
2019/11/08 Javascript
在vue中使用防抖函数组件操作
2020/07/26 Javascript
Vue实现开关按钮拖拽效果
2020/09/22 Javascript
js定时器出现第一次延迟的原因及解决方法
2021/01/04 Javascript
介绍Python中的fabs()方法的使用
2015/05/14 Python
Python爬虫框架Scrapy实战之批量抓取招聘信息
2015/08/07 Python
Python 读写文件和file对象的方法(推荐)
2016/09/12 Python
将python图片转为二进制文本的实例
2019/01/24 Python
python实现单链表的方法示例
2019/09/03 Python
css3中less实现文字长阴影(long shadow)
2020/04/24 HTML / CSS
加拿大高尔夫超市:Golf Town
2018/01/12 全球购物
室内设计专业个人的自我评价
2013/12/18 职场文书
写好自荐信的几个要点
2013/12/26 职场文书
社区七一党员活动方案
2014/01/25 职场文书
2014年两会学习心得体会
2014/03/17 职场文书
企业指导教师评语
2014/04/28 职场文书
工艺技术员岗位职责
2015/02/04 职场文书
经理岗位职责范本
2015/04/15 职场文书
考教师资格证不要错过的4个最佳时机
2019/07/17 职场文书
javaScript Array api梳理
2021/03/31 Javascript
详解CSS伪元素的妙用单标签之美
2021/05/25 HTML / CSS
pytorch通过训练结果的复现设置随机种子
2021/06/01 Python
苹果M1芯片安装nginx 并且部署vue项目步骤详解
2021/11/20 Servers
Apache自带的ab压力测试工具的实现
2022/07/23 Servers