【问题标题】:How do I display a filtered list of objects from an array in typescript?如何在打字稿中显示从数组中过滤的对象列表?
【发布时间】:2019-11-26 22:12:54
【问题描述】:

如何从我的 BED ARRAY 显示经过过滤的 BED 对象列表?我只需要一个简单的过滤器(bStatus = "Available")供循环参考。

我的 BED 对象有一个床位状态,显示它是可用的还是已占用的(对于医院系统),我希望它只显示可用的床位。 (当 bStatus == “可用”时)

代码提供了来自我的 component.ts 的 NgOnInit() 的一部分,我能够显示所有可用的床,但由于我是 Angular 和 Typescript 的新手,我不知道如何将过滤器添加到我的代码。

this.bedService
        .query()
        .pipe(
            filter((mayBeOk: HttpResponse<IBed[]>) => mayBeOk.ok),
            map((response: HttpResponse<IBed[]>) => response.body),
        )
        .subscribe((res: IBed[]) => (this.beds = res), (res: HttpErrorResponse) => this.onError(res.message));

预期的输出应该是 bStatus = "Available" 的床位列表。现在它显示了我数组中的所有床位,包括 bStatus = "Available" 和 "Occupied"。

【问题讨论】:

    标签: arrays angular typescript web filter


    【解决方案1】:

    您只需运行Array.filter() 即可获取可用床位。

    .subscribe((res: IBed[]) => {
      this.beds = res.filter(obj => obj.bStatus === 'Available');
    })
    

    【讨论】:

    • 谢谢,我要替换这个吗(this.beds = res)?
    • @Ken 是的,你可以
    • 如果我想放置多个过滤器,我应该使用 && 像 obj.bStatus === 'Available' && obj.Type = 'A' 吗? Angular 中的 && 运算符合法吗?
    • @Ken 是的,有效的语法是 JavaScript 和 TypeScript。基本上,您可以将过滤器回调更改为:res.filter(obj =&gt; obj.bStatus === 'Available' &amp;&amp; obj.Type = 'A');
    • 我已经尝试过了,它没有返回任何东西,obj.bStatus === 'Available' 有效,但如果我添加另一个参数,代码会中断。你知道它的背后可能是什么吗?
    猜你喜欢
    • 2020-03-22
    • 1970-01-01
    • 1970-01-01
    • 2017-08-10
    • 1970-01-01
    • 2021-05-24
    • 2022-01-23
    • 1970-01-01
    • 2020-09-28
    相关资源
    最近更新 更多