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 bootstrap实现生日日期联动选择
Apr 07 Javascript
使用do...while的方法输入一个月中所有的周日(实例代码)
Jul 22 Javascript
AngularJS基础 ng-readonly 指令简单示例
Aug 02 Javascript
基于JS如何实现给字符加千分符(65,541,694,158)
Aug 03 Javascript
js中判断变量类型函数typeof的用法总结
Aug 09 Javascript
JS SetInterval 代码实现页面轮询
Aug 11 Javascript
js 判断一个数字是不是2的n次方幂的实例
Nov 26 Javascript
微信小程序提交form操作示例
Dec 30 Javascript
vue2配置scss的方法步骤
Jun 06 Javascript
Vue 根据条件判断van-tab的显示方式
Aug 03 Javascript
基于p5.js 2D图像接口的扩展(交互实现)
Nov 30 Javascript
javascript实现点击产生随机图形
Jan 25 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
重置版宣传动画
2020/04/09 魔兽争霸
浅谈web上存漏洞及原理分析、防范方法(安全文件上存方法)
2013/06/29 PHP
PHP return语句的另一个作用
2014/07/30 PHP
几个javascript操作word的参考代码
2009/10/26 Javascript
jquery live()调用不存在的解决方法
2014/02/26 Javascript
JavaScript调试技巧之console.log()详解
2014/03/19 Javascript
javascript实现多栏闭合展开式广告位菜单效果实例
2015/08/05 Javascript
jQuery实现平滑滚动的标签分栏切换效果
2015/08/28 Javascript
JavaScript如何动态创建table表格
2020/08/02 Javascript
解决JavaScript数字精度丢失问题的方法
2015/12/03 Javascript
jQuery实现的可编辑表格完整实例
2016/06/20 Javascript
jQuery实现移动端手机商城购物车功能
2016/09/24 Javascript
axios发送post请求springMVC接收不到参数的解决方法
2018/03/05 Javascript
微信小程序收藏功能的实现代码
2018/06/12 Javascript
vue 组件中添加样式不生效的解决方法
2018/07/06 Javascript
Vue数据双向绑定的深入探究
2018/11/27 Javascript
ES6箭头函数和扩展实例分析
2020/05/23 Javascript
vue 路由meta 设置导航隐藏与显示功能的示例代码
2020/09/04 Javascript
Vue filter 过滤器、以及在table中的使用介绍
2020/09/07 Javascript
JavaScript this关键字的深入详解
2021/01/14 Javascript
[01:09:40]Newbee vs Pain 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
python实现从字符串中找出字符1的位置以及个数的方法
2014/08/25 Python
Python MySQLdb 使用utf-8 编码插入中文数据问题
2018/03/13 Python
Django框架使用富文本编辑器Uedit的方法分析
2018/07/31 Python
python消除序列的重复值并保持顺序不变的实例
2018/11/08 Python
python单线程文件传输的实例(C/S)
2019/02/13 Python
python RC4加密操作示例【测试可用】
2019/09/26 Python
Pandas操作CSV文件的读写实现方法
2019/11/13 Python
python使用pyecharts库画地图数据可视化的实现
2020/03/25 Python
python字典key不能是可以是啥类型
2020/08/04 Python
村级换届选举方案
2014/05/10 职场文书
感谢信的格式
2015/01/21 职场文书
2016年万圣节活动个人总结
2016/04/05 职场文书
多表查询、事务、DCL
2021/04/05 MySQL
python如何读取.mtx文件
2021/04/22 Python
redis 解决库存并发问题实现数量控制
2022/04/08 Redis