【发布时间】:2021-05-03 15:13:59
【问题描述】:
我正在研究一个考虑三个布尔变量的函数,它过滤一个数组。 假设变量是 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 为真,则应返回 8 个元素,如果 a 和 c 为真,则应返回 23元素等等。 该 func 应该与三个过滤器的任何组合一起使用。 然而,事实并非如此。这一次只适用于一个过滤器。 我可能做错了什么?我尝试将 && 更改为 ||但这不起作用(而且我认为 && 是正确的方式)
【问题讨论】:
-
抱歉,问题的解释比较混乱,能否请您简化一下,以便我们更好地理解条件?为“原始”数组提供样本数据集?
标签: javascript arrays angular filter angular-filters