JS sort() 函數


說實話,看源碼沒看懂,作為一個碼農來說是很失敗了。
雖然想要 知其然而知其所以然,然而技術太菜沒辦法,只能先把表面使用掌握了。

JS 的sort函數,有傳參和不傳參兩種模式,不傳參我這里就不說了,隨便看看都能掌握。
這里對傳參做一下記錄,好讓自己以后忘記了可以快速記起來(只是適用於我自己快速撿起的方式)

傳參的類型為函數,函數又有兩個形參a和b,
function (a, b) {
return a - b
}

數組會根據傳入的函數的返回值去進行排序。

我這里只能浮於表面的來對自己進行一些強行的規則注釋(以此來幫助我自己記住如何使用):

 

sort函數默認是從小到大進行排序的,函數傳入兩個參數,順序為(a, b)

如果需要從小到大排序,那么就需要 return a - b;(死記硬背)
如果想要從大到小排序,那么就返回 return b - a.

------

如果數組的內容是對象,就比較對象的值: return a.xx - b.xx

這里還可以進行多次排序,當排序條件一相等時,進行條件二的排序...以此類推

當 a.xx === b.xx 的時候

return a.yy - b.yy //當xx相等的時候,按yy從小到大排序
return b.yy - a.yy //當xx相等的時候,按yy從大到小排序


------

最后還有需要注意一點的就是
如果return 的表達式中,沒有a,b參與,直接返回 數字,分為兩種情況

return 1 //數組原樣輸出,不排序
return 0 //數組原樣輸出,不排序
return -1 //數組倒序


------代碼嘗試console.log看結果


let arr1 = [1, 4, 2, 5, 6, 7, 9, 8, 3, 0];
let arr2 = [
{ v: 1, index: 0, key: 1 },
{ v: 10, index: 1, key: 1 },
{ v: 2, index: 2, key: 1 },
{ v: 5, index: 3, key: 1 },
{ v: 5, index: 1, key: 1 },
{ v: 5, index: 14, key: 1 },
{ v: 5, index: 2, key: 1 },
{ v: 5, index: 2, key: 8 },
{ v: 5, index: 2, key: 4 },
{ v: 5, index: 2, key: 7 },
{ v: 5, index: 2, key: 6 },
{ v: 5, index: 4, key: 1 },
{ v: 5, index: 34, key: 1 },
{ v: 7, index: 5, key: 1 },
{ v: 6, index: 6, key: 1 },
{ v: 5, index: 7, key: 1 },
{ v: 8, index: 8, key: 1 },
{ v: 1, index: 9, key: 1 },
{ v: 3, index: 10, key: 1 }
];
let arr3 = arr2.sort(function (a, b) {
  return b.v === a.v ? b.index === a.index ? b.key - a.key : b.index - a.index : a.v - b.v;
})

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM