如何在打字稿中显示从数组中过滤的对象列表?

Posted

技术标签:

【中文标题】如何在打字稿中显示从数组中过滤的对象列表?【英文标题】: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"。

【问题讨论】:

【参考方案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' 有效,但如果我添加另一个参数,代码会中断。你知道它的背后可能是什么吗?

以上是关于如何在打字稿中显示从数组中过滤的对象列表?的主要内容,如果未能解决你的问题,请参考以下文章

如何在反应打字稿中从json文件中获取和显示数据

如何将对象数组转换为在打字稿中具有动态键的单个对象

在打字稿中向对象数组插入新值

如何在打字稿中使用可能的字符串和数字索引确定对象的类型?

从数组打字稿中删除对象(Angular 2)

无法从打字稿中的 json 对象获取数组响应