首页 新闻 会员 周边

javascript 数组的sort()方法

0
悬赏园豆:20 [已解决问题] 解决于 2011-12-24 21:18

var numbers = [3,342,23,22,124];

numbers.sort(function(a,b){return b - a});

以上代码就能求出数组的最大值,在sort()方法里传入的是一个比较函数。

小弟不才,只知道这么用,但是不a,b分别代表什么我一点都不清楚!

或者说他的内部是怎样实现的?

麻烦各位大侠讲解一下

再在感激不尽!

谢谢各位大侠了哟!

手插口袋,谁都不爱。的主页 手插口袋,谁都不爱。 | 初学一级 | 园豆:151
提问于:2011-05-13 17:37
< >
分享
最佳答案
1

var numbers = [3,342,23,22,124];

numbers.sort(function(a,b){return b - a});

第一次比较时,a=342,b=3,

3<242

第二次 a=23, b=3

3<23

第三次 a=23,b=342

342>23

第四次 a=23,b=3

3<23

第五次 a=22,b=3

3<22

第六次a=22,b=23

.....

至于怎么样自己看吧...

 

 

 

 

 

 

 

 

收获园豆:20
飞魚 | 初学一级 |园豆:150 | 2011-05-15 21:24
其他回答(4)
0

我不是很清楚,应该是a 与 b进行比较,就对应的序列比较如 1,与2 比较 类似冒泡法。

金风一叶 | 园豆:325 (菜鸟二级) | 2011-05-13 18:54
0

显然排序需要比较,a,b 就是需要比较的两个元素,返回值>0表示a>b,返回什==0表示a==b,返回值<0表示a<b.

其实这个函数就是告诉sort方法,该如何比较数组中的任意两个元素。

Jeremy Liu | 园豆:705 (小虾三级) | 2011-05-13 22:30
0

这个就是要告诉你,如果你要排序的是字符串数组也可以像这样排序。例如:

var numbers = ['3','342','23','22','124'];

numbers.sort(function(a,b){return b.length - a.length});

这样就会按照长度来排序了,这个函数就是排序时的回调函数

小小刀 | 园豆:1991 (小虾三级) | 2011-05-14 14:53
0

为了正确对数组进行排序,必须为sort()方法定义一个比较函数

对传入的一对值进行比较,让后返回3个值的任何一个:小于0.等于0,或者大于0.

当函数的返回值小于0的时候,可知道第二个值大于第一个值,因此第二个值排序靠后,

当函数的返回值大于0的时候,可以知道第一个值大于第二个值,第一个值靠后,

当等于0的时候,就不必排序了,这两个值是相等的

numbers.sort(function(a,b){return b - a});是降序排列,return a-b是升序排列;

木木代码人生 | 园豆:245 (菜鸟二级) | 2011-05-14 19:58
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册