【发布时间】:2020-05-15 14:42:03
【问题描述】:
我在 VueJS 2.0/Nuxt 应用程序上有以下方法:
applyFilters(filterCriteria) {
this.filtered = this.unfiltered.slice().filter((x) => {
// Zona
if (x.zona !== filterCriteria.zona) {
return false
}
// Bairro
for (const key in filterCriteria.bairro) {
if (x.bairro !== filterCriteria.bairro[key]) {
return false
}
}
// Categoria
for (const key in filterCriteria.categoria) {
if (x.categoria !== filterCriteria.categoria[key]) {
return false
}
}
return true
})
},
我想要实现的是以某种方式也基于多个条件过滤多个条件。 .filter() 可以实现吗?
每当我应用第一个标准时,它都可以正常工作,并且当我应用第二个标准时,它也可以正常工作,但是每当我将第二个项目应用于第二个标准时,它每次都无法过滤并回退到 false .
这行得通:
filterCriteria: {
zona: 'Germany',
bairro: ['Berlin'],
categoria: ['City']
}
这不会:
filterCriteria: {
zona: 'Germany',
bairro: ['Berlin', 'Munich'],
categoria: ['City']
}
是我遗漏了什么还是无法按预期工作?
【问题讨论】:
-
不清楚您对第二个过滤器的期望。按照你的方式,如果有任何 不 匹配,它将返回 false。那是你要的吗?或者,如果任何一个匹配匹配,您是否希望它返回 true?
-
@MarkMeyer 抱歉不清楚。预期的行为是过滤
bairro: 'Berlin', 'Munich']中的任何条件,而不是每个条件。
标签: javascript arrays vue.js ecmascript-6 nuxt.js