Sort:
排序
现在是升序,我想降序怎么办呢?
,reverse吧,这不就完事了。
那现在看个例子:
var arr = [1,3,5,4,10];//拍完顺序之后应该是1,3,4,5,10
但是你看 ,怎么回事?
他被你这个当成了字符,按ASCII排的,不是咱们想要的。
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的结果不就完事了,else,a-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的大小。
对吧!