【问题标题】:Multiple filters in angular角度的多个过滤器
【发布时间】: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


【解决方案1】:

根据我对您的问题的理解,应该这样做

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    • 1970-01-01
    • 2018-12-02
    相关资源
    最近更新 更多