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请求的ThickBox3.1类下载
Dec 23 Javascript
风吟的小型JavaScirpt库 (FY.JS).
Mar 09 Javascript
js 通用javascript函数库整理
Aug 14 Javascript
setTimeout()与setInterval()方法区别介绍
Dec 24 Javascript
js判断浏览器版本以及浏览器内核的方法
Jan 20 Javascript
详解js中class的多种函数封装方法
Jan 03 Javascript
Bootstrap框架结合jQuery仿百度换肤功能实例解析
Sep 17 Javascript
JavaScript 继承详解(五)
Oct 11 Javascript
Js利用Canvas实现图片压缩功能
Sep 13 Javascript
Vue中util的工具函数实例详解
Jul 08 Javascript
vue中使用WX-JSSDK的两种方法(推荐)
Jan 18 Javascript
Js利用正则表达式去除字符串的中括号
Nov 23 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
香妃
2021/03/03 冲泡冲煮
PHP会话控制:Session与Cookie详解
2014/09/27 PHP
PHP后台备份MySQL数据库的源码实例
2019/03/18 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
Laravel中如何轻松容易的输出完整的SQL语句
2020/07/26 PHP
javascript 极速 隐藏/显示万行表格列只需 60毫秒
2009/03/28 Javascript
JS打开新窗口的2种方式
2013/04/18 Javascript
Javascript实现的常用算法(如冒泡、快速、鸽巢、奇偶等)
2014/04/29 Javascript
javascript继承机制实例详解
2014/11/20 Javascript
JavaScript实现俄罗斯方块游戏过程分析及源码分享
2015/03/23 Javascript
弹出遮罩层后禁止滚动效果【实现代码】
2016/04/29 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
2016/08/11 Javascript
express文件上传中间件Multer详解
2016/10/24 Javascript
如何提高Dom访问速度
2017/01/05 Javascript
基于vue.js路由参数的实例讲解——简单易懂
2017/09/07 Javascript
Web开发使用Angular实现用户密码强度判别的方法
2017/09/27 Javascript
详解vue.js数据传递以及数据分发slot
2018/01/20 Javascript
基于Bootstrap和JQuery实现动态打开和关闭tab页的实例代码
2019/06/10 jQuery
vue 使用鼠标滚动加载数据的例子
2019/10/31 Javascript
详谈Object.defineProperty 及实现数据双向绑定
2020/07/18 Javascript
详解如何在Javascript中使用Object.freeze()
2020/10/18 Javascript
Python中http请求方法库汇总
2016/01/06 Python
python 日志模块 日志等级设置失效的解决方案
2020/05/26 Python
Python实现http接口自动化测试的示例代码
2020/10/09 Python
法国购买隐形眼镜和眼镜网站:Optical Center
2019/10/08 全球购物
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
抽象类和接口的区别
2012/09/19 面试题
高中学生评语大全
2014/04/25 职场文书
审计局2014法制宣传日活动总结
2014/11/01 职场文书
2014年维稳工作总结
2014/11/18 职场文书
2015年上半年党建工作总结
2015/03/30 职场文书
通知的写法
2015/04/23 职场文书
房地产置业顾问工作总结
2015/10/23 职场文书
教师法制教育培训学习心得体会
2016/01/14 职场文书
解决golang 关于全局变量的坑
2021/05/06 Golang
Win11怎么把合并的任务栏分开 Win11任务栏合并分开教程
2022/04/06 数码科技