Vue.js如何按日期对筛选结果进行排序

时间:2018-03-22 03:21:44

标签: vue.js vuex

我们正在推出一个活动应用程序,用户可以搜索即将到来的音乐节。我们还希望过滤的搜索结果按时间顺序显示为“startDate”。

我们的活动卡片:

<v-card flat class="pa-2 mb-3 eventcard" v-for="event in filteredEvents" :key="event.id"></v-card>

然后我们的计算属性:

filteredEvents: function(){
    return this.$store.getters.loadedEvents.filter((event) => {
      return event.title.toLowerCase().match(this.search.toLowerCase())
    })
  }

最后,一个事件开始日期的例子:

startDate:"2018-04-13"

根据文档,我尝试添加“_.orderBy(this.event,'startDate')”但我只是收到错误this.search.toLowerCase(...).orderBy is not a function

有什么想法吗?谢谢!

1 个答案:

答案 0 :(得分:2)

使用.sort

export default {
  filteredEvents: function() {
    return this.$store.getters.loadedEvents
      .filter(event => {
        return event.title.toLowerCase().match(this.search.toLowerCase());
      })
      .sort(function(a, b) {
        // Turn your strings into dates, and then subtract them
        // to get a value that is either negative, positive, or zero.
        return new Date(b.startDate) - new Date(a.startDate);
      });
  }
};
来自https://stackoverflow.com/a/10124053/5599288

方法