在我的应用程序中,我试图开发一种功能来过滤返回的“报价”数组(如果它们属于使用日期选择器设置的一组日期)。我的日期选择器将值发射到范围对象内的两个属性-这是“ filters.range.startDate”和“ filters.range.endDate”。我阵列中的每个商品都具有“ offer.dates.start”和“ offer.dates.end”属性。
我在我的计算属性中添加了以下语句,该语句不会破坏计算结果,无论日期如何都不会返回任何结果……有人有什么建议吗?
编辑-添加了整个计算属性,并以日期范围语句作为最后条件。
computed: {
filteredOffers() {
let filtered = this.offers.filter(offer => {
return (offer.island === this.filters.islandFilter || this.filters.islandFilter === 'All') // Island
&& (offer.starrating === this.filters.starRating || this.filters.starRating === 'All') // Star Rating
&& (offer.board === this.filters.boardBasis || this.filters.boardBasis === 'All') // Board Basis
&& (offer.duration === this.filters.duration || this.filters.duration === 'All') // Duration
&& (offer.price.from < this.filters.price) // Price
&& (this.filters.travelby === 'sea' && offer.travel.air === false || this.filters.travelby === 'All') // Sea or Air
&& (this.filters.range.startDate >= offer.dates.start && offer.dates.end <= this.filters.range.endDate) // DATE RANGE!!
});
if (this.sortby === 'ascending') {
return filtered.sort((a, b) => {
return a.price.from - b.price.from;
})
} else {
return filtered.sort((a, b) => {
return b.price.from - a.price.from;
})
}
} }
答案 0 :(得分:1)
首先,我将日期对象转换为以毫秒为单位的时间戳,只是在进行比较时避免出现一些格式错误。
let date = new Date();
let timestamp = date.getTime();
在那之后,我想您的逻辑是不正确的,因为您在过滤器上的结束日期应大于报价的结束日期,并且在过滤器上的开始日期应小于报价的开始日期。
this.filters.range.startDate <= offer.dates.start && this.filters.range.endDate >= offer.dates.end