angular 中的多个过滤器

Multiple filters in angular

我正在研究一个考虑三个布尔变量的函数,它过滤一个数组。 假设变量是 a, b, c = false 我的过滤器是

let newArr = this.original.filter(x =>
  (!this.a || x === undefined) &&
  (!this.b || x === this.name) &&
  (!this.c || ((x !== undefined) && (x !== this.name))));

它是通过一个数组来解析的,三个条件分别是元素是否未定义,元素是否匹配用户,元素已定义但不匹配用户。 所以说arr长度是30,第一组有1个元素,第二组有7个,第三组有22个。如果a和b为真,它应该return 8个元素,如果a和c为真,它应该 return 23 个元素,依此类推。 func 应该与三个过滤器的任何组合一起使用。 然而,事实并非如此。这一次只适用于一个过滤器。 我做错了什么?我尝试将 && 更改为 ||但这没有用(而且我认为 && 无论如何都是正确的方法)

根据我对你的问题的理解,这应该可以做到

let newArr = this.original.filter(x =>
  (this.a && x === undefined) ||
  (this.b && x === this.name) ||
  (this.c && ((x !== undefined) && (x !== this.name))));