【问题标题】:How to filter data on Object in Angular如何在 Angular 中过滤对象上的数据
【发布时间】:2021-06-16 23:50:17
【问题描述】:

我用这个函数从后端获取数据

  private loaddata(): void {
    this.dataService.loaddata().pipe(
      tap((response: any) => {
        this.persons = response.results;
        this.personmembertrue = this.persons.filter(x => x.is_family_member === 'false')
      }),
      takeUntil(this.onComponentDestroy)
    ).subscribe();
  }

console.log(response) 显示如下所示的 JSON

{
    "count": 38,
    "next": null,
    "previous": null,
    "results": [
        {
            "id": 113,
            "foreigner": false,
            "outside_community": false,
            "nipt": "",
            "nid": "G45675570K",
            "is_family_member": true
        },
        {
            "id": 115,
            "foreigner": false,
            "outside_community": false,
            "nipt": "",
            "nid": "K30776771A",
            "is_family_member": false
        },
        {
            "id": 116,
            "foreigner": false,
            "outside_community": false,
            "nipt": "",
            "nid": "J305070577",
            "is_family_member": false
        }...
      ]
    }

我想要的是具有"is_family_member": false 的数据,为此我创建了this.personmembertrue = this.persons.filter(x => x.is_family_member === 'false')

这部分代码显示为空。

请知道如何使用"is_family_member": false 显示数据

【问题讨论】:

  • 字符串'false' 是真值,而布尔值false 不是。您不需要条件中的相等检查:this.personmembertrue = this.persons.filter(x => !x.is_family_member)

标签: javascript angular typescript object filter


【解决方案1】:

将条件改为:

this.personmembertrue = this.persons.filter(x => x.is_family_member === false);

看看这是否有效。

【讨论】:

    【解决方案2】:

    尝试仅使用 ==,使用 3 = 比较类型和值,或者尝试删除引号,可能是在比较 bool 和字符串。

    【讨论】:

      【解决方案3】:

      我们甚至可以用它来简化@Zunayed Shahriar 的表达方式

      this.personmembertrue = this.persons.filter(x => !x.is_family_member);
      

      已编辑:仅当 is_family_member 始终为真/假时才会起作用,正如@Zunayed Shahriar 在评论中提到的那样。

      【讨论】:

      • 它也可以。但是如果该字段可以为空并且为空,那么数据也将被过滤。如果用户只想要字段不为 null 和 false 的数据,那么此表达式将不准确。对吗?
      • 是的,你是对的 :) 我编辑了我的答案,谢谢
      猜你喜欢
      • 1970-01-01
      • 2019-10-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-11-08
      • 1970-01-01
      • 2020-11-11
      相关资源
      最近更新 更多