vue排序

<li @click="changeSort">
          价格
          <van-icon name="arrow-down" v-show="sortKey==1" />
          <van-icon name="arrow-up" v-show="sortKey==2" />
        </li>

sortKey: 0, //0原始数据,1升序 2降序

 computed: {
    //过滤函数的操作
    getGoods() {
      let goods = [];
      goods = this.list.filter((item, index) => {
        return item.cid == this.c_id;
      });
      //按照价格进行升序或降序排列
      if (this.sortKey > 0) {
        //价格排序用数组的sort方法
        goods.sort((a, b) => {
          return this.sortKey == 1 ? a.price - b.price : b.price - a.price;
        });
      }
      return goods;
    }
  },
要实现Vue排序功能,有几种不同的方法,以下是其中两种: 1. 使用原生JavaScript的sort()方法:可以在Vue的computed属性中使用sort()方法,对需要排序的数组进行排序。例如: ``` <template> <div> <ul> <li v-for="item in sortedItems">{{ item }}</li> </ul> </div> </template> <script> export default { data() { return { items: [3, 1, 4, 2] } }, computed: { sortedItems() { return this.items.sort((a, b) => a - b) } } } </script> ``` 2. 使用第三方插件:可以使用一些第三方插件,如Lodash、Vue-Filterable等,实现更复杂的排序功能。例如,使用Vue-Filterable插件,可以实现按照多个属性进行排序: ``` <template> <div> <table> <thead> <tr> <th v-for="column in columns" @click="sortBy(column)">{{ column }}</th> </tr> </thead> <tbody> <tr v-for="item in filteredItems"> <td>{{ item.name }}</td> <td>{{ item.age }}</td> <td>{{ item.gender }}</td> </tr> </tbody> </table> </div> </template> <script> import VueFilterable from 'vue-filterable' export default { data() { return { items: [ { name: 'Alice', age: 25, gender: 'female' }, { name: 'Bob', age: 30, gender: 'male' }, { name: 'Charlie', age: 20, gender: 'male' } ], columns: ['name', 'age', 'gender'], sortColumn: 'name', sortDirection: 'asc' } }, computed: { filteredItems() { return VueFilterable.filter(this.items, this.search, { sortColumn: this.sortColumn, sortDirection: this.sortDirection }) } }, methods: { sortBy(column) { if (column === this.sortColumn) { this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc' } else { this.sortColumn = column this.sortDirection = 'asc' } } } } </script> ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值