반응형
VueJ에서 개체 속성별로 개체 배열을 필터링하는 방법s
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>
표시되는 동영상이 동일한 개체의 시간 세션에 따라 달라지도록 동영상을 필터링하려면 어떻게 해야 합니까?
제가 시도한 것은 다음과 같습니다.
<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.time
로.moment
.그렇지만,movie.time_session
세션의 배열이며, 이 세션에는time
소유물.아마도 각 요소의 시간과 비교할 필요가 있을 것입니다.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>
언급URL : https://stackoverflow.com/questions/44444455/how-to-filter-array-of-objects-by-object-property-in-vuejs
반응형
'programing' 카테고리의 다른 글
C에서 단일 문자를 스캔하는 방법 (0) | 2022.08.21 |
---|---|
'synchronized'는 무슨 뜻입니까? (0) | 2022.08.21 |
JS App에서 onReady 약속을 만들려면 어떻게 해야 합니까? (0) | 2022.08.21 |
C 라이브러리에 '스로우'가 표시되는 이유는 무엇입니까? (0) | 2022.08.21 |
Vue 2: 렌더 함수에서 단일 파일 컴포넌트를 렌더링하는 방법 (0) | 2022.08.21 |