vue中數(shù)組和對象的排序
創(chuàng)新互聯(lián)是一家專注于網(wǎng)站設(shè)計制作、成都網(wǎng)站建設(shè)與策劃設(shè)計,平頂山網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:平頂山等地區(qū)。平頂山做網(wǎng)站價格咨詢:13518219792
1數(shù)組排序
- {{a}}
2對象排序
- {{stu}}
一、前言
我在vue項(xiàng)目中遇到了一個表格排序的需求,根據(jù)某一項(xiàng)的值的大小從大到小調(diào)整數(shù)組順序。
二、代碼
表格大概是這個樣子,樣式和圖片在代碼中簡化了。
股票 | 入選價 | 最新價 | 模擬漲跌幅 |
---|---|---|---|
{{item.name}}
{{item.bn}}
|
{{item.in_price}} | {{item.now_price}} | {{item.increase}}% |
1. 排序方法
這里用到的是數(shù)組的sort方法,這個方法有一個需要注意的地方,就是不傳參數(shù)的話,將按字母順序?qū)?shù)組中的元素進(jìn)行排序,說得更精確點(diǎn),是按照字符編碼的順序進(jìn)行排序。這并不是我們想要的排序方法,所以必須要傳參。
sort方法的參數(shù)是一個函數(shù),這個函數(shù)提供了一個比較方法,要比較兩個值,然后返回一個用于說明這兩個值的相對順序的數(shù)字。
compare(key) { return function(a,b){ var val1 = a[key]; var val2 = b[key]; return val2 - val1; } }
在代碼中,compare函數(shù)中的匿名函數(shù)就是這樣一個函數(shù),但這個函數(shù)外面又嵌套了一層,這是因?yàn)樾枰鶕?jù)數(shù)組中的某一項(xiàng)來排序,所以需要把這一項(xiàng)的key值傳進(jìn)來。
2. 調(diào)用排序方法
sort(type) { this.sortType = type; this.recommendlist.sort(this.compare(type)); // switch(type){ // case 'in_price': // this.sortType = 'in_price'; // this.recommendlist.sort(this.compare('in_price')); // break; // case 'now_price': // this.sortType = 'now_price'; // this.recommendlist.sort(this.compare('now_price')); // break; // case 'increase': // this.sortType = 'increase'; // this.recommendlist.sort(this.compare('increase')); // break; // } }
一開始我按照注釋的部分寫的,和我一樣抽象能力不是特別好的人首先會想到要這樣寫,但是寫出來之后發(fā)現(xiàn)三種情況不過是重復(fù)的代碼,這時我就直接用最上面兩行代碼來代替,寫完以后感覺內(nèi)心一片平和。這種復(fù)用率高的代碼簡直讓人太舒服了。
三、結(jié)語
雖然是一個簡單的功能,但是非常值得歸納總結(jié)一下。希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。