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