vue 根據數組中某一項的值進行排序
1.排序方法
這里用到的是數組的sort方法,這個方法有一個需要注意的地方,就是不傳參數的話,將按字母順序對數組中的元素進行排序,說得更精確點,是按照字符編碼的順序進行排序。這並不是我們想要的排序方法,所以必須要傳參。
sort方法的參數是一個函數,這個函數提供了一個比較方法,要比較兩個值,然后返回一個用於說明這兩個值的相對順序的數字。
- 若a小於b,在排序后的數組中a應該出現在b之前,則返回一個小於0的值。
- 若a等於b,則返回0。
- 若a大於b,則返回一個大於0的值。
compare(key){
return function(a,b){
var val1 = a[key];
var val2 = b[key];
return val2 - val1;
}
}
在代碼中,compare函數中的匿名函數就是這樣一個函數,但這個函數外面又嵌套了一層,這是因為需要根據數組中的某一項來排序,所以需要把這一項的key值傳進來。
2.調用函數:
//arrayObject是一個數組對象,例如[{tmp:1},{tmp:2},{tmp:3},{tmp:4},{tmp:5}]
this.arrayObject.sort(this.compare(key))
//key值為數組對象中要根據其排序的鍵值對的鍵,如arrayObject中的tmp,即
this.arrayObject.sort(this.compare('tmp'))
最后
十分感謝原博客博主,原博客地址為:
https://segmentfault.com/a/1190000016199017