js数组排序

js的数组中有一个sort()方法,默认是按照ASCII字符顺序进行升序排列。sort(sortFun)方法可以接受一个方法为参数,[b]这个方法有两个参数:分别代表每次排序比较时的两个数组项[/b]。sort()排序时每次比较两个数组项都会执行这个参数,并把两个比较的数组项作为参数传递给这个函数。当函数返回值为1的时候就交换两个数组项的顺序,否则就不交换。

代码:
var arr = [1,11,23,51,56,100,3,4,1,5,0,5,7,562,0,67,10,50];

arr.sort(); //调用sort方法后,数组本身会被改变,即影响原数组
alert(arr.join(","));//0,0,1,1,10,100,11,23,3,4,5,5,50,51,56,562,67,7 不按照数字大小排序

arr.sort(function(a,b){return a>b?1:-1});//从小到大排序
alert(arr.join(","));//0,0,1,1,3,4,5,5,7,10,11,23,50,51,56,67,100,562

arr.sort(function(a,b){return a<b?1:-1});//从大到小排序
alert(arr.join(","));//562,100,67,56,51,50,23,11,10,7,5,5,4,3,1,1,0,0

[b]结论[/b]:
1.数组调用sort方法后,会影响本身(而非生成新数组)
2.sort()方法默认是按字符来排序的,所以在对数字型数组排序时,不可想当然的以为会按数字大小排序!
3.要改变默认的sort行为(即按字符排序),可以自行指定排序规则函数(如本例所示)

下面是一个自定义排序的例子,根据二维数组的各种方式排序:
var arr= new Array();
arr[0]= new Array('e', 2, 'dfg');
arr[1]= new Array('b', 3, 'bcfgf');
arr[2]= new Array('a', 1, 'za');
arr[3]= new Array('d', 4, 'ehfg');
arr.sort(sortFun);
alert(arr[0] + " --- " + arr[1] + " --- " + arr[2] + " --- " + arr[3])
function sortFun(x,y){ //根据二维数组的第三列的第一个字母的ASCII码来升序排序
return x[2].charCodeAt(0) - y[2].charCodeAt(0);
}
function sortFun(x,y){ //根据二维数组的第二列的数字大小来升序排序
return x[1] - y[1];
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值