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))));
我正在研究一个考虑三个布尔变量的函数,它过滤一个数组。 假设变量是 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))));