Javascript 如何在Vuejs中按多个元素进行筛选

Javascript 如何在Vuejs中按多个元素进行筛选,javascript,vue.js,vuejs2,Javascript,Vue.js,Vuejs2,我在Vuejs中实现了一个应用程序,我有两个选择,在其中,如果在父选择中选择了任何选项,则会过滤子选择。我想添加一个额外的过滤器来检查它是否是客户端: 我有一个model.data保存所有数据,它基本上是一个元素数组: model.data: [ {id: 1, name: XYZ 1, is_client: 0, address: "ABCD Address 1"}, {id: 2, name: XYZ 2, is_client: 1, address: "ABCD Addre

我在
Vuejs
中实现了一个应用程序,我有两个选择,在其中,如果在父选择中选择了任何选项,则会过滤子选择。我想添加一个额外的过滤器来检查它是否是客户端:

我有一个model.data保存所有数据,它基本上是一个元素数组:

model.data: [
    {id: 1, name: XYZ 1, is_client: 0, address: "ABCD Address 1"},
    {id: 2, name: XYZ 2, is_client: 1, address: "ABCD Address 2"},
    {id: 3, name: XYZ 3, is_client: 0, address: "ABCD Address 3"},
]
我有一个父选择的
v-model=“company\u name”
,在子选择中用作过滤器

filteredCompanyOptions() {
    if (this.model.data)
    {
        return this.model.data
            .filter(f => f.name !== this.company_name.label)
            .map(d => ({label: d.name, value: d.id}))
    }
}

指导我如何实现这一点。

如果对筛选器的回调返回的值为true,则元素将添加到已筛选的数组中。您可以使用任意多个布尔运算:

filteredCompanyOptions () {
  if (this.model.data) {
    return this.model.data
      .filter(f => f.name !== this.company_name.label && f.is_client === 1)
      .map(d => ({ label: d.name, value: d.id }))
  }
}
如果您的条件更复杂,您可以在回调主体中执行所有需要的操作,然后返回布尔值:

filteredCompanyOptions () {
  if (this.model.data) {
    return this.model.data
      .filter(f => {
        if (f.name !== this.company_name.label && f.is_client === 1) {
          return true
        } else {
          return false
        }
      })
      .map(d => ({ label: d.name, value: d.id }))
  }
}

.filter(f=>(f.name!==this.company\u name.label&&f.is\u client==1))
@thanksd所以基本上我可以添加&多次?是的,它只是在传递给的匿名函数中向返回的布尔值添加了一个条件。在
f.is\u client==1