js小記----數組方法sort

在js中數組的用處很大,在很多地方都會用到數組,因爲數組用起來比較方便,在數組中有的方法比較簡單,有的比較複雜,今天介紹一個很常用但是又容易記混的方法:sort()方法。
這個方法可以直接使用:

		var arr = [5,1,3,6,4,8,7,9];
		var newArr =  arr.sort();//[1,3,4,5,6,7,8,9]

會按照從小到大的順序返回,是不是覺得很簡單呢,我們再換一個數組試試

			var arr = [5,6,3,1,9,7,10,15,45];
			var newArr = arr.sort();// [1, 10, 15, 3, 45, 5, 6, 7, 9]

上面代碼爲什麼會這樣的,因爲,sort()這個方法只能在10以下的數字進行排序,大於等於10就不行了,還好這個方法裏面可以自定義函數,通過自定義的函數來決定是升序還是降序。

var arr = [5,6,3,1,9,7,10,15,45];
			var newArr = arr.sort(function(a,b){
				return a-b;
			});
			console.log(newArr);//[1, 3, 5, 6, 7, 9, 10, 15, 45]

這樣輸出的就是升序,反過來

var arr = [5,6,3,1,9,7,10,15,45];
			var newArr = arr.sort(function(a,b){
				return b-a;
			});
			console.log(newArr);//[45, 15, 10, 9, 7, 6, 5, 3, 1]

輸出的就是降序,但是這個結果是怎麼得來的呢?聽我慢慢道來
在這裏面函數的原理:看返回值:1.返回值爲正,則交換兩個數位置
2.返回值爲負,則兩個數不動。
3.爲0 ,數組位置不變

var newArr = arr.sort(function(a,b){
				if(a > b){
					return 1;
				}else{
					return -1;
				}
			});
		//這樣寫就是升序
		var newArr = arr.sort(function(a,b){
				if(a < b){   //在這裏改一下就是降序
					return 1;
				}else{
					return -1;
				}
			});
			

每次傳入兩個數分別賦予給a,b然後進行比較,按照上面的規則就可以按照自己想要的順序排序,將上面代碼簡化一下:

var newArr = arr.sort(function(a,b){
				if(a - b > 0){
					return a-b;
				}else{
					return a-b;
				}
			});

在if裏這樣寫就可以直接判斷ab的大小,這樣可以看出來,無論什麼時候只要返回a-b就是升序,所以簡化到最後就是

var newArr = arr.sort(function(a,b){
			return a-b;
		});

這就是這個函數的具體實現原理啦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章