数组的常用方法(3)--es3.0:sort

Sort

排序

现在是升序,我想降序怎么办呢?

,reverse吧,这不就完事了。

 

那现在看个例子:

var arr = [1,3,5,4,10];//拍完顺序之后应该是1,3,4,5,10

但是你看 ,怎么回事?

他被你这个当成了字符,按ASCII排的,不是咱们想要的。

 

扫描二维码关注公众号,回复: 4041137 查看本文章

Sort遵守一个规则:

1.必须写两个形参

               2.看返回值

                    (1)如果返回值为正数时,后面的数在前面

                    (2)如果返回值为负数时,前面的数在前面

                    (3)如果返回值为0时,不动

            var arr = [1,3,5,4,10];
			arr.sort(function(){
				
				return ;
			})

 

返回值如果是1,为正数,那么1和3换位置,再比较1,5,它符合冒泡排序的规则。

返回值如果是-1,为负数,1还是在前面,再比较1,5;1,4.。。。

所以返回值就是我们所控制的。

            var arr = [1,3,5,4,10];
			arr.sort(function(a,b){
				if(a > b){
					return 1; 
				}else{
					return -1;
				}
			})

 

那还有没有更简单的方法,也就是说,你把他简化一下。

三目运算符可以吧!arr.sort(function(a,b){

                    a > b ? 1 : -1;

               })

还能不呢个简化一下?

你看,a>b返回一个正数,说明这是升序吧,a>b也就是a-b>0,

 

            var arr = [1,3,5,4,10];
			arr.sort(function(a,b){
				if(a - b > 0){
					return 1; 
				}else{
					return -1;
				}
			})

a>b,else就是a-b<0吧。所以,a-b>0的时候返回一个正数,那我返回a-b的结果不就完事了,elsea-b<0的时候返回一个负数,那我也返回a-b的结果不也就完事了,都是返回a-b的结果。

 

            var arr = [1,3,5,4,10];
			arr.sort(function(a,b){
				return a - b;
			})

那降序就是返回b-a了呗。

看结果的时候你可别arr.sort,这个函数已经执行完了,所以你不能直接调用,你得里面加函数才能调用,你要如果调用arr.sort(),他会比较ASCII的大小。

对吧!

 

 

 

 

 

猜你喜欢

转载自blog.csdn.net/hdq1745/article/details/83818215