【问题标题】:Filter/match on an array against nested property - multiple filter针对嵌套属性过滤/匹配数组 - 多个过滤器
【发布时间】:2020-12-02 06:12:21
【问题描述】:

我有一个简单的选择。选择返回一个字符串值,例如“富”。然后,我将字符串值与列表中的所有条目进行匹配。只有匹配的条目才会返回。 entry.eventType.description === this.ngxValue; // "foo" === "foo" returns true

例如单选

// this.ngxValue = "foo"

private multiEventTypeFilter(entry) {
    if (this.ngxValue === 'Any') {
        return true;
    } else {
        return entry.eventType.description === this.ngxValue;
    }
}

多选

我现在更改了我的选择以允许多选。现在返回一个由所有选定值组成的数组,例如["foo", "bar", "car"]。所以现在我想返回与该数组中的任何值匹配的所有条目。 this.ngxValue 不再是单个字符串,而是包含多个字符串的数组。以下是我们想要的...

entry.eventType.description === this.ngxValue; // "foo" === ["foo", "bar", "car"] returns true

任何帮助表示赞赏。

【问题讨论】:

    标签: javascript arrays angular typescript filtering


    【解决方案1】:

    虽然Array.prototype.includes() 是满足要求的直接方式,但还有另一种选择Array.prototype.some()。 由于您正在寻找其他替代方案,请在此处提及,以便以后随时提供帮助

    下面是Array.prototype.some()的使用示例

    let data = ["foo", "bar", "car"]
    
    console.log(data.some(d => d === "foo"))

    根据您的要求,方法如下

    return this.ngxValue.some(val => val === entry.eventType.description);
    

    【讨论】:

      【解决方案2】:

      你应该使用Array.prototype.includes()

      return this.ngxValue.includes(entry.eventType.description);
      

      如果值存在于数组中,则返回 true,否则返回 false

      【讨论】:

        【解决方案3】:
        return this.ngxValue.indexOf(entry.eventType.description) !== -1;
        

        对不起。我马上就找到了答案。我会在这里发帖,但如果有其他选择,请随时展示。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-11-07
          • 2022-01-11
          • 1970-01-01
          • 2018-01-16
          • 2015-11-30
          相关资源
          最近更新 更多