js 數組元素排序?


Part.1  sort 方法

js 有自帶排序方法 sort()默認 升序 排列

如:

 data() {
      return {
         arr: [1,3,2,5,6,8,7,4,9]
      }
 },

控制台如下:

貌似沒毛病,老鐵~~~   0.0

Part.2  問題

我們改變數組:

 data() {
      return {
         arr: [1,3,2,5,11,10,20,50,6,8,7,4,9]
      }
}

控制台如下:

what are you  弄啥咧?  什么鬼!!!

查了一波資料,因為 sort() 方法排序是根據 Unicode碼 比較,所以無法完成這種數組的排序!怎么辦咧?

看了幾篇博客發現一個有效且到目前為止感覺最簡單的一種方法:自定義比較

如下:

 cmp: function(a, b) {
      return a - b
 }

原理:

          參數  a ,b

          如果 a > b  則 a - b > 0  返回一個正數

          如果 a < b  則 a - b < 0  返回一個負數

          如果 a = b  則 a - b = 0  返回 0

Part.3  實踐

data() {
   return {
     arr: [1,3,2,5,11,10,20,50,6,8,7,4,9]
   }
},
mounted() {
   this.arr.sort(this.cmp)//注意此處不能使用 this.cmp()。原因 1:代碼會報錯 2.我們需要的是傳入一個函數 this.cmp,this.cmp()這樣只會得到 a-b 值 
},
methods: {
   cmp: function(a, b) {
        return a - b
   }
},

控制台如下:

完成排序!

如果小伙伴需要 降序 排列,只需將 自定義比較函數

 

return  a - b  改為  b - a  即可!~

 

 

 

 

參考博客:https://blog.csdn.net/baidu_25343343/article/details/54982747

 


免責聲明!

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



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