1. 程式人生 > >陣列的常用方法(3)--es3.0:sort

陣列的常用方法(3)--es3.0:sort

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的結果不就完事了,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的大小。

對吧!