在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;
});
這就是這個函數的具體實現原理啦!