请教:数组的sort()方法按数字大小排列

PerterPon 2011-09-18 03:53:17
原生的方法貌似是按照第一个数字或者字母来排列的,例如2大于11,网上看到一个方法,

function test(a,b) {
retuen a - b;
}
arr.sort(test)

貌似这样子的话,就是按照数字大小排列,自己去试了一下确实是这样,请教一下这个原理是什么,在此先谢过各位了
...全文
269 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
胡飞 2011-09-19
  • 打赏
  • 举报
回复
[Quote=引用楼主 qqwswxdo 的回复:]
原生的方法貌似是按照第一个数字或者字母来排列的,例如2大于11,网上看到一个方法,
JScript code

function test(a,b) {
retuen a - b;
}
arr.sort(test)


貌似这样子的话,就是按照数字大小排列,自己去试了一下确实是这样,请教一下这个原理是什么,在此先谢过各位了
[/Quote]

return a-b 这里的进行了数据类型自动转换,转换成了数值
shelless 2011-09-18
  • 打赏
  • 举报
回复


function test(a,b) {
return a>b?-1:1;
}
var arr=[2,11];
alert(arr.sort(test))//输出2,11!!!
豆虫 2011-09-18
  • 打赏
  • 举报
回复
test函数返回的值如果大于0,则b的索引减1,再与它前面的值比,如果返回值仍大于0,则再减1,直接索引为0或者返回值为负数,如果返回值为负数,则索引不变.

另外:函数名最好不要用test这种名称来命名
PerterPon 2011-09-18
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 blue_lg 的回复:]

而且
function test(a,b) {
return a - b;
}
var arr=[2,11];
alert(arr.sort(test))//输出2,11!!!
[/Quote]

额,return写错了,他是从小到大排列的阿喂,当然是2,11啦,
BLUE_LG 2011-09-18
  • 打赏
  • 举报
回复
而且
function test(a,b) {
return a - b;
}
var arr=[2,11];
alert(arr.sort(test))//输出2,11!!!
BLUE_LG 2011-09-18
  • 打赏
  • 举报
回复
retuen 笔误!!

87,921

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧