var numbers = [3,342,23,22,124];
numbers.sort(function(a,b){return b - a});
以上代码就能求出数组的最大值,在sort()方法里传入的是一个比较函数。
小弟不才,只知道这么用,但是不a,b分别代表什么我一点都不清楚!
或者说他的内部是怎样实现的?
麻烦各位大侠讲解一下
再在感激不尽!
谢谢各位大侠了哟!
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
.....
至于怎么样自己看吧...
我不是很清楚,应该是a 与 b进行比较,就对应的序列比较如 1,与2 比较 类似冒泡法。
显然排序需要比较,a,b 就是需要比较的两个元素,返回值>0表示a>b,返回什==0表示a==b,返回值<0表示a<b.
其实这个函数就是告诉sort方法,该如何比较数组中的任意两个元素。
这个就是要告诉你,如果你要排序的是字符串数组也可以像这样排序。例如:
var numbers = ['3','342','23','22','124'];
numbers.sort(function(a,b){return b.length - a.length});
这样就会按照长度来排序了,这个函数就是排序时的回调函数
为了正确对数组进行排序,必须为sort()方法定义一个比较函数
对传入的一对值进行比较,让后返回3个值的任何一个:小于0.等于0,或者大于0.
当函数的返回值小于0的时候,可知道第二个值大于第一个值,因此第二个值排序靠后,
当函数的返回值大于0的时候,可以知道第一个值大于第二个值,第一个值靠后,
当等于0的时候,就不必排序了,这两个值是相等的
numbers.sort(function(a,b){return b - a});是降序排列,return a-b是升序排列;