我正在嘗試在我的 VueJS 程式碼中建立排序函數。它具有以下字段:Price:從低到高
,Price:從高到低
。
所以,這是我的 template
:
<div name="divSortBy"> <span> Sort by: </span> <select v-model="sort" name="selectSortBy"> <option v-for="item in sortedList" :key="item.id" name="selectOptionsSortBy" :value="item" @click="sortBy" v-text="item.title" ></option> </select> </div>
這在 data() { return {} }
:
sortByItems: [ { id: 1, title: 'Price: Low to High', sort: 1 }, { id: 2, title: 'Price: High to Low', sort: 2 } ], sort: null productsList: [],
這是 compulated
:
computed: { sortedList() { // FILTER HERE if (this.sort) { if (this.sort.id === '1') { console.log(this.sort.title) // console.log for tests this.productsList.sort(function(a, b) { return a.price - b.price }) } else if (this.sort.id === '2') { console.log(this.sort.title) } } return this.sortByItems }
正如你所看到的,我試圖透過這個函數對其進行排序,但它不起作用:
this.productsList.sort(function(a, b) { return a.price - b.price }
順便說一句,productsList:[]
是物件列表,因此,我需要按price
欄位對其進行排序,然後在頁面上顯示排序後的產品。
謝謝!
您可以透過傳遞比較器函數來自訂排序演算法
示範