javascript - 如何在VueJS中按对象属性过滤对象数组

标签 javascript vue.js vuejs2

我想打印出时间 session 在 20 小时后或同一天开始的电影。无论哪种方式,我都无法让它工作。

组件数据结构:

day:"2017-06-08T18:34:27.211Z"
movies:Array[8]
0:Object
   Description:"orphan the becomes a famous magician "
   id:1
   movieName:"Harry Potter "
   time_session:Array[3]
     0:Object
       id:1
       pivot:Object
       time:"2017-06-14 00:00:00"
     1:Object
     2:Object
1:Object
2:Object
3:Object
4:Object

模板:
<template>
  <div> 
    <li v-for="movie in filteration(movies)">{{movie.movieName}}</li>
  </div>
</template>

如何过滤电影,以便显示的电影取决于同一对象中的时间 session ?

这是我尝试过的:
<script>
  export default{
    data() {
      return {
        movies:[],
        day:moment()
      }
    },  
    mounted(){
      axios.get("/fa")
        .then(response  => this.movies = response.data);
    },
    methods:{
      filteration(movie){
        return movie.filter(this.time);
      },
      time(movie){
        return moment(movie.time_session.time).hour() > 20;
        // return moment(movie.time_session.time).isSame(this.day,'day');
      }    
    }
  }     
</script>

最佳答案

您遇到问题的最可能原因是您正在通过 movie.time_session.timemoment .但是,movie.time_session是一个 session 数组,没有 time属性(property)。您可能需要比较 time_session 的每个元素的时间大批。

通常,在 Vue 中显示过滤数据数组的最佳方法是创建一个计算属性来过滤数据并返回它。

在您的情况下,您可以创建一个计算属性 filteredMovies返回过滤后的电影并在您的模板中使用它:

computed: {
  filteredMovies() {
    return this.movies.filter((movie) => { 
      return movie.time_session.reduce((acc, session) => {
        return acc || (moment(session.time).hour() > 20);
      }, false);
    });
  }
}

然后,在您的模板中,引用 filteredMovies像这样:
<li v-for="movie in filteredMovies">{{movie.movieName}}</li>

关于javascript - 如何在VueJS中按对象属性过滤对象数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44444455/

相关文章:

javascript - 如何访问 VueJS 组件中的 Sequelize 实例?

vue.js - 在 Vue-CLI 中的公共(public)文件夹中导入 JSON 文件的方法

javascript - 如何将 settimeout 与 vue.js 观察者一起使用?

validation - 如何在 vuelidate 中动态设置验证字段

javascript - 根据 VueJS 中的先前选择隐藏第二个和第三个选择菜单中的特定选项

javascript - 如何覆盖这个计算?JQuery

javascript - 导航栏下的 Bootstrap Off Canvas 菜单

javascript - 设置可观察值时防止 knockout 调用订阅

php - 从php更新mysql数据库中的多条记录

javascript - 如何在 props 验证器中访问 "this"