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实现flash8类似的连接效果
May 03 Javascript
JQuery DataTable删除行后的页面更新利用Ajax解决
May 17 Javascript
jQuery移除tr无效的解决方法(tr是动态添加)
Sep 22 Javascript
Javascript检查图片大小不要让大图片撑破页面
Nov 04 Javascript
jquery及js实现动态加载js文件的方法
Jan 21 Javascript
jquery获取文档高度和窗口高度汇总
Jan 25 Javascript
AngularJS入门(用ng-repeat指令实现循环输出
May 05 Javascript
解决vue-router在同一个路由下切换,取不到变化的路由参数问题
Sep 01 Javascript
移动端吸顶fixbar的解决方案详解
Jul 17 Javascript
layer iframe 设置关闭按钮的方法
Sep 12 Javascript
基于JS实现视频上传显示进度条
May 12 Javascript
JavaScript 获取滚动条位置并将页面滑动到锚点
Feb 08 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
joomla数据库操作示例代码
2016/01/06 PHP
[原创]php简单隔行变色功能实现代码
2016/07/09 PHP
jquery不支持toggle()高(新)版本的问题解决
2016/09/24 PHP
Javascript操作select方法大全[新增、修改、删除、选中、清空、判断存在等]
2008/09/26 Javascript
jQuery学习笔记之控制页面实现代码
2012/02/27 Javascript
javascript将数组插入到另一个数组中的代码
2013/01/10 Javascript
JavaScript 实现简单的倒计时弹窗DEMO附图
2014/03/05 Javascript
js+html5实现canvas绘制圆形图案的方法
2015/06/05 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
快速学习jQuery插件 jquery.validate.js表单验证插件使用方法
2015/12/01 Javascript
AngularJS下对数组的对比分析
2016/08/24 Javascript
Vuejs第十篇之vuejs父子组件通信
2016/09/06 Javascript
同步异步动态引入js文件的几种方法总结
2016/09/23 Javascript
如何处理JSON中的特殊字符
2016/11/30 Javascript
Angular ng-repeat遍历渲染完页面后执行其他操作详细介绍
2016/12/13 Javascript
JS重载实现方法分析
2016/12/16 Javascript
详解webpack+gulp实现自动构建部署
2017/06/29 Javascript
vue2.0与bootstrap3实现列表分页效果
2017/11/28 Javascript
JavaScript简易计算器制作
2020/01/17 Javascript
Vue关于组件化开发知识点详解
2020/05/13 Javascript
python里将list中元素依次向前移动一位
2014/09/12 Python
python3个性签名设计实现代码
2018/06/19 Python
Python使用random.shuffle()打乱列表顺序的方法
2018/11/08 Python
python 发送和接收ActiveMQ消息的实例
2019/01/30 Python
python统计文章中单词出现次数实例
2020/02/27 Python
Python爬虫如何应对Cloudflare邮箱加密
2020/06/24 Python
HTML5头部标签的一些常用信息小结
2016/10/23 HTML / CSS
英国最大的婴儿监视器网上商店:Baby Monitors Direct
2018/04/24 全球购物
电气自动化大学生求职信
2013/10/16 职场文书
制冷与电控专业应届生求职信
2013/11/11 职场文书
保护母亲河倡议书
2014/04/14 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
党员教师四风自我剖析材料
2014/09/30 职场文书
欠条格式范本
2015/07/03 职场文书
音乐课《小猫钓鱼》教学反思
2016/02/18 职场文书
如何用JavaScript检测当前浏览器是无头浏览器
2021/04/27 Javascript