Javascript 对数据库中的数据设置多个筛选器
我正在从数据库中提取数据 数据的结构如下所示:Javascript 对数据库中的数据设置多个筛选器,javascript,arrays,vue.js,filtering,vuetify.js,Javascript,Arrays,Vue.js,Filtering,Vuetify.js,我正在从数据库中提取数据 数据的结构如下所示: serie --- title (string) --- category (array) filteredSeries () { return this.series.filter(serie => { return serie.title.toLowerCase().match(this.search.toLowerCase()) }) } <v-flex xs12 sm4 md3 lg2 v-for
serie
--- title (string)
--- category (array)
filteredSeries () {
return this.series.filter(serie => {
return serie.title.toLowerCase().match(this.search.toLowerCase())
})
}
<v-flex xs12 sm4 md3 lg2 v-for="serie in filteredSeries" :key="serie.title" pa-3>
.....
</v-flex>
data () {
return {
series: [],
search: '',
categories: [
'Crime', 'Drama', 'Mistery', 'Comedy', 'Horror', 'Sci-Fi'
],
filterCategory: []
}
},
<v-select prepend-inner-icon="category" height="35" v-model="filterCategory" :items="categories" chips label="Category" multiple></v-select>
我使用计算属性创建了搜索过滤器。看起来是这样的:
serie
--- title (string)
--- category (array)
filteredSeries () {
return this.series.filter(serie => {
return serie.title.toLowerCase().match(this.search.toLowerCase())
})
}
<v-flex xs12 sm4 md3 lg2 v-for="serie in filteredSeries" :key="serie.title" pa-3>
.....
</v-flex>
data () {
return {
series: [],
search: '',
categories: [
'Crime', 'Drama', 'Mistery', 'Comedy', 'Horror', 'Sci-Fi'
],
filterCategory: []
}
},
<v-select prepend-inner-icon="category" height="35" v-model="filterCategory" :items="categories" chips label="Category" multiple></v-select>
我在这样的系列中循环:
serie
--- title (string)
--- category (array)
filteredSeries () {
return this.series.filter(serie => {
return serie.title.toLowerCase().match(this.search.toLowerCase())
})
}
<v-flex xs12 sm4 md3 lg2 v-for="serie in filteredSeries" :key="serie.title" pa-3>
.....
</v-flex>
data () {
return {
series: [],
search: '',
categories: [
'Crime', 'Drama', 'Mistery', 'Comedy', 'Horror', 'Sci-Fi'
],
filterCategory: []
}
},
<v-select prepend-inner-icon="category" height="35" v-model="filterCategory" :items="categories" chips label="Category" multiple></v-select>
Filter select中填充的数据如下所示:
serie
--- title (string)
--- category (array)
filteredSeries () {
return this.series.filter(serie => {
return serie.title.toLowerCase().match(this.search.toLowerCase())
})
}
<v-flex xs12 sm4 md3 lg2 v-for="serie in filteredSeries" :key="serie.title" pa-3>
.....
</v-flex>
data () {
return {
series: [],
search: '',
categories: [
'Crime', 'Drama', 'Mistery', 'Comedy', 'Horror', 'Sci-Fi'
],
filterCategory: []
}
},
<v-select prepend-inner-icon="category" height="35" v-model="filterCategory" :items="categories" chips label="Category" multiple></v-select>
此选择返回filterCategory数组。现在我想要的是,我得到一个系列,其中包含在filterCategory中选择的特定类别。我不知道怎么做。我认为,如果按类别过滤可以包含在computed属性中(按搜索词过滤已完成),这将是完美的
欢迎您提供任何帮助。您的筛选方法也可以修改为通过
filteredCategories
进行筛选
我们可以使用JavaScript的和方法来实现这一点
另外,我将使用而不是,因为在搜索正则表达式时通常使用match()
filteredSeries () {
// Filtering by selected categories.
const filteredSeries = this.series.filter(serie => {
return this.filteredCategories.every(category => {
return serie.categories.includes(category);
});
});
// Further filtering by search word.
return filteredSeries.filter(serie => {
return serie.title.toLowerCase().includes(this.search.toLowerCase()));
});
}
您的筛选方法也可以修改为按
filteredCategories
进行筛选
我们可以使用JavaScript的和方法来实现这一点
另外,我将使用而不是,因为在搜索正则表达式时通常使用match()
filteredSeries () {
// Filtering by selected categories.
const filteredSeries = this.series.filter(serie => {
return this.filteredCategories.every(category => {
return serie.categories.includes(category);
});
});
// Further filtering by search word.
return filteredSeries.filter(serie => {
return serie.title.toLowerCase().includes(this.search.toLowerCase()));
});
}
也许我不够清楚。我不想检查类别是否包含搜索词。我想取回我从
@PatrickJane中选择类别的系列-好的,你也希望在filteredSeries()中发生这种情况,对吗?这样,您只需搜索应用类别筛选后返回的filteredSeries
。嗯,是的。我希望这样的事情发生,因为我不知道怎么做,这是可行的。问题是因为默认情况下,filteredCategories
是空数组,并且没有显示任何序列。我放置了条件if(this.filteredCategories.length==0){return true}else{return this.filteredCategories.includes(category);}
它现在正在工作。我想我会有更多的问题。谢谢你。是的,它工作得很好。我想祝贺你。你让我很开心。希望你为自己感到骄傲,你刚刚做了这么好的工作。非常感谢。希望你能帮我解决stackoverflow上的任何其他问题:D.干杯,伙计。也许我还不够清楚。我不想检查类别是否包含搜索词。我想取回我从
@PatrickJane中选择类别的系列-好的,你也希望在filteredSeries()中发生这种情况,对吗?这样,您只需搜索应用类别筛选后返回的filteredSeries
。嗯,是的。我希望这样的事情发生,因为我不知道怎么做,这是可行的。问题是因为默认情况下,filteredCategories
是空数组,并且没有显示任何序列。我放置了条件if(this.filteredCategories.length==0){return true}else{return this.filteredCategories.includes(category);}
它现在正在工作。我想我会有更多的问题。谢谢你。是的,它工作得很好。我想祝贺你。你让我很开心。希望你为自己感到骄傲,你刚刚做了这么好的工作。非常感谢。希望你能帮我解决stackoverflow上的任何其他问题:D.干杯,伙计。