js数组用sort()方法排序出错_江南春008_新浪博客

作为程序员,大家对数组并不陌生,对于js中数组的sort()方法你了解多少呢? 下面咱们分析下sort()方法:
示例1:
var arr = [1,11,2,44,99,112];
arr = arr.sort();
alert(arr);
运行后的结果:[1,11,112,2,44,99];
是不是很意外,与想象中的[1,2,11,44,99,112]不同呢?
为什么呢?因为sort默认是按第一个数字比较,相同再按第二个数组比较,以此类推那如何实现数字大小的正常排序呢?
sort()方法可以接受一个函数参数来实现数字的大小比较
示例2:
var arr = [1,11,2,44,99,112];
arr = arr.sort(function(n1,n2){ if(n1>n2){ return 1; }else{ return 0; } });
alert(arr);
运行后结果:[1,2,11,44,99,112] 这次就正常了。
或许你会有疑问,sort()方法函数中的return后面的-1;1;0是什么意思,为什么要用-1、1、0不用其他的呢?
回答:其实当n1>n2只要返回正数即可,0不能变。
因此根据这个疑问,我们可以改进一下sort()方法的参数函数的写法
示例3:
var arr = [1,11,2,44,99,112];
arr = arr.sort(function(n1,n2){ return n1-n2; });
alert(arr);
运行后结果:[1,2,11,44,99,112]
这种改进看明白了吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值