js使用sort()函数对二维数组快速排序的写法
作者:admin 时间:2015-7-3 9:31:4 浏览: 1847-
-
js数组的排序方法有很多,冒泡法,插入法等等,不过对于数组的排序来说,js提供了一个非常实用的函数sort(),可以对数组进行自动排序,不需要我们手写函数代码进行排序。然而,当我需要排序的数据是一些二维数组时,sort()方法就不能再直接使用了,需要使用一点技巧。本文介绍如何使用js对二维数组进行快速排序的写法。
假如我们有几组二维数组(姓名,年龄):
'jack',20
'tony',25'stone',26'mandy',23现在需要对他们按照年龄从小到大来排序,我们该怎样编写代码呢?
1)、自定义对象属性:
function Persion(name,age){
this.name=name; this.age=age;}2)、声明数组,并赋值
var objectList = new Array();
objectList.push(new Persion('jack',20));objectList.push(new Persion('tony',25));objectList.push(new Persion('stone',26));objectList.push(new Persion('mandy',23));3)、按年龄从小到大排序
objectList.sort(function(a,b){
return a.age-b.age});4)、输出数组数据
for(var i=0;i<objectList.length;i++){
document.writeln('<br />age:'+objectList[i].age+' name:'+objectList[i].name);}输出结果为:
age:20 name:jack
age:23 name:mandyage:25 name:tonyage:26 name:stone完整代码如下:
<script type="text/javascript">
var objectList = new Array(); function Persion(name,age){ this.name=name; this.age=age; } objectList.push(new Persion('jack',20)); objectList.push(new Persion('tony',25)); objectList.push(new Persion('stone',26)); objectList.push(new Persion('mandy',23)); //按年龄从小到大排序 objectList.sort(function(a,b){ return a.age-b.age}); for(var i=0;i<objectList.length;i++){ document.writeln('<br />age:'+objectList[i].age+' name:'+objectList[i].name); }</script>可能遇到的问题
“10,51,100,50”排序为什么是“10,100,50,51”?
默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序。
如何处理?参考如下例子:
var arrDemo = new Array();
arrDemo[0] = 10;arrDemo[1] = 50;arrDemo[2] = 51;arrDemo[3] = 100;arrDemo.sort(); //调用sort方法后,数组本身会被改变,即影响原数组alert(arrDemo);//10,100,50,51 默认情况下sort方法是按ascii字母顺序排序的,而非我们认为是按数字大小排序arrDemo.sort(function(a,b){return a>b?1:-1});//从小到大排序alert(arrDemo);//10,50,51,100arrDemo.sort(function(a,b){return a<b?1:-1});//从大到小排序alert(arrDemo);//100,51,50,10我要数组从大到小排序怎么写?
<script type="text/javascript">
var arrSimple2=new Array(1,8,7,6); arrSimple2.sort(function(a,b){ return b-a}); document.writeln(arrSimple2.join()); //解释:a,b表示数组中的任意两个元素,若return > 0 b前a后;reutrn < 0 a前b后;a=b时存在浏览器兼容 //简化一下:a-b输出从小到大排序,b-a输出从大到小排序。</script>通过上述几个实例的学习,js对数组(包括二维数组)的排序就没有问题了。
-